PDA

View Full Version : حرفه ای: مشکل بدست آوردن شماره یونیکد کاراکترهای فارسی



zahedpoor
شنبه 25 مرداد 1393, 10:17 صبح
با عرض سلام و خسته نباشید
یک سوال دارم که هیچ کجا جوابش را پیدا نکردم. ممنون میشم اگر راهنمایی بفرمایید

میخوام به دنبال کاراکترهای یونیکد فارسی در یک رشته که در Edit وارد شده بگردم و به جای آن یک شماره یونیکد دیگه قرار بدم.

به عنوان مثال در کلمه "آنجایی" هر جا حرف ی کوچک بود به شماره یک کاراکتر یونیکد مثلا FD99 تغییر کنه. و هر جه که FD99 بود به ی کوچک عوض بشه. اطلاع دارید چطور میشه انجام داد.
نمیدونم چرا هر وقت نوبت به ی کوچک میرسه با دستور ord کد پویینت ی بزرگ را برمیگردونه.

با تشکر

Ananas
شنبه 25 مرداد 1393, 18:03 عصر
سلام.

procedure TForm1.Button1Click(Sender: TObject);
var
I: Integer;
s : string;
begin
s := Edit1.Text;
for I := 1 to Length(s) do
begin
if (WORD(s[I]) = $FD99) then
s[I] := 'ی'
else if (s[I] = 'ی') then
s[I] := WideChar($FD99);
end;
Edit1.Text := s;
end;

zahedpoor
یک شنبه 26 مرداد 1393, 08:07 صبح
مشکل همین جاست. چطور میتونید در کلمه "آنجایی" فقط ی کوچک و نه ی بزرگ را به یک کاراکتر دیگه تغییر بدید

دلفــي
دوشنبه 27 مرداد 1393, 09:04 صبح
Dec

Hex

Char

Name






32

20


SPACE



33

21

!

EXCLAMATION MARK



34

22

"

QUOTATION MARK



35

23

#

NUMBER SIGN



36

24

$

DOLLAR SIGN



37

25

%

PERCENT SIGN



38

26

&

AMPERSAND



39

27

\'

APOSTROPHE



40

28

(

LEFT PARENTHESIS



41

29

)

RIGHT PARENTHESIS



42

2A

*

ASTERISK



43

2B

+

PLUS SIGN



44

2C

,

COMMA



45

2D

-

HYPHEN-MINUS



46

2E

.

FULL STOP



47

2F

/

SOLIDUS



48

30

0

DIGIT ZERO



49

31

1

DIGIT ONE



50

32

2

DIGIT TWO






51

33

3

DIGIT THREE



52

34

4

DIGIT FOUR



53

35

5

DIGIT FIVE



54

36

6

DIGIT SIX



55

37

7

DIGIT SEVEN



56

38

8

DIGIT EIGHT



57

39

9

DIGIT NINE



58

3A

:

COLON



59

3B

;

SEMICOLON



60

3C

<

LESS-THAN SIGN



61

3D

=

EQUALS SIGN



62

3E

>

GREATER-THAN SIGN



63

3F

?

QUESTION MARK



64

40

@

COMMERCIAL AT



65

41

A

LATIN CAPITAL LETTER A



66

42

B

LATIN CAPITAL LETTER B



67

43

C

LATIN CAPITAL LETTER C



68

44

D

LATIN CAPITAL LETTER D



69

45

E

LATIN CAPITAL LETTER E



70

46

F

LATIN CAPITAL LETTER F



71

47

G

LATIN CAPITAL LETTER G



72

48

H

LATIN CAPITAL LETTER H



73

49

I

LATIN CAPITAL LETTER I



74

4A

J

LATIN CAPITAL LETTER J



75

4B

K

LATIN CAPITAL LETTER K



76

4C

L

LATIN CAPITAL LETTER L



77

4D

M

LATIN CAPITAL LETTER M



78

4E

N

LATIN CAPITAL LETTER N



79

4F

O

LATIN CAPITAL LETTER O



80

50

P

LATIN CAPITAL LETTER P



81

51

Q

LATIN CAPITAL LETTER Q



82

52

R

LATIN CAPITAL LETTER R



83

53

S

LATIN CAPITAL LETTER S



84

54

T

LATIN CAPITAL LETTER T



85

55

U

LATIN CAPITAL LETTER U



86

56

V

LATIN CAPITAL LETTER V



87

57

W

LATIN CAPITAL LETTER W



88

58

X

LATIN CAPITAL LETTER X



89

59

Y

LATIN CAPITAL LETTER Y



90

5A

Z

LATIN CAPITAL LETTER Z



91

5B

[

LEFT SQUARE BRACKET



92

5C

\

REVERSE SOLIDUS



93

5D

]

RIGHT SQUARE BRACKET



94

5E

^

CIRCUMFLEX ACCENT



95

5F

_

LOW LINE



96

60

`

GRAVE ACCENT



97

61

a

LATIN SMALL LETTER A



98

62

b

LATIN SMALL LETTER B



99

63

c

LATIN SMALL LETTER C



100

64

d

LATIN SMALL LETTER D



101

65

e

LATIN SMALL LETTER E



102

66

f

LATIN SMALL LETTER F



103

67

g

LATIN SMALL LETTER G



104

68

h

LATIN SMALL LETTER H



105

69

i

LATIN SMALL LETTER I



106

6A

j

LATIN SMALL LETTER J



107

6B

k

LATIN SMALL LETTER K



108

6C

l

LATIN SMALL LETTER L



109

6D

m

LATIN SMALL LETTER M



110

6E

n

LATIN SMALL LETTER N



111

6F

o

LATIN SMALL LETTER O



112

70

p

LATIN SMALL LETTER P



113

71

q

LATIN SMALL LETTER Q



114

72

r

LATIN SMALL LETTER R



115

73

s

LATIN SMALL LETTER S



116

74

t

LATIN SMALL LETTER T



117

75

u

LATIN SMALL LETTER U



118

76

v

LATIN SMALL LETTER V



119

77

w

LATIN SMALL LETTER W



120

78

x

LATIN SMALL LETTER X



121

79

y

LATIN SMALL LETTER Y



122

7A

z

LATIN SMALL LETTER Z



123

7B

{

LEFT CURLY BRACKET



124

7C

|

VERTICAL LINE



125

7D

}

RIGHT CURLY BRACKET



126

7E

~

TILDE



128

80

°

DEGREE SIGN



129

81

·

MIDDLE DOT



130

82



BULLET OPERATOR



131

83



SQUARE ROOT



132

84



MEDIUM SHADE



133

85



BOX DRAWINGS LIGHT HORIZONTAL



134

86



BOX DRAWINGS LIGHT VERTICAL



135

87



BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL



136

88



BOX DRAWINGS LIGHT VERTICAL AND LEFT



137

89



BOX DRAWINGS LIGHT DOWN AND HORIZONTAL



138

8A



BOX DRAWINGS LIGHT VERTICAL AND RIGHT



139

8B



BOX DRAWINGS LIGHT UP AND HORIZONTAL



140

8C



BOX DRAWINGS LIGHT DOWN AND LEFT



141

8D



BOX DRAWINGS LIGHT DOWN AND RIGHT



142

8E



BOX DRAWINGS LIGHT UP AND RIGHT



143

8F



BOX DRAWINGS LIGHT UP AND LEFT



144

90

β

GREEK SMALL LETTER BETA



145

91



INFINITY



146

92

φ

GREEK SMALL LETTER PHI



147

93

±

PLUS-MINUS SIGN



148

94

½

VULGAR FRACTION ONE HALF



149

95

¼

VULGAR FRACTION ONE QUARTER



150

96



ALMOST EQUAL TO



151

97

«

LEFT-POINTING DOUBLE ANGLE QUOTATION MARK



152

98

»

RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK



153

99



ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM



154

9A



ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM



157

9D



ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM



158

9E



ARABIC LIGATURE LAM WITH ALEF FINAL FORM



160

A0


NO-BREAK SPACE



161

A1


SOFT HYPHEN



162

A2



ARABIC LETTER ALEF WITH MADDA ABOVE FINAL FORM



163

A3

£

POUND SIGN



164

A4

¤

CURRENCY SIGN



165

A5



ARABIC LETTER ALEF WITH HAMZA ABOVE FINAL FORM



168

A8



ARABIC LETTER ALEF FINAL FORM



169

A9

ب

ARABIC LETTER BEH



170

AA

ت

ARABIC LETTER TEH



171

AB

ث

ARABIC LETTER THEH



172

AC

،

ARABIC COMMA



173

AD

ج

ARABIC LETTER JEEM



174

AE

ح

ARABIC LETTER HAH



175

AF

خ

ARABIC LETTER KHAH



176

B0

٠

ARABIC-INDIC DIGIT ZERO



177

B1

١

ARABIC-INDIC DIGIT ONE



178

B2

٢

ARABIC-INDIC DIGIT TWO



179

B3

٣

ARABIC-INDIC DIGIT THREE



180

B4

٤

ARABIC-INDIC DIGIT FOUR



181

B5

٥

ARABIC-INDIC DIGIT FIVE



182

B6

٦

ARABIC-INDIC DIGIT SIX



183

B7

٧

ARABIC-INDIC DIGIT SEVEN



184

B8

٨

ARABIC-INDIC DIGIT EIGHT



185

B9

٩

ARABIC-INDIC DIGIT NINE



186

BA

ف

ARABIC LETTER FEH



187

BB

؛

ARABIC SEMICOLON



188

BC

س

ARABIC LETTER SEEN



189

BD

ش

ARABIC LETTER SHEEN



190

BE

ص

ARABIC LETTER SAD



191

BF

؟

ARABIC QUESTION MARK



192

C0

¢

CENT SIGN



193

C1

ء

ARABIC LETTER HAMZA



194

C2

آ

ARABIC LETTER ALEF WITH MADDA ABOVE



195

C3

أ

ARABIC LETTER ALEF WITH HAMZA ABOVE



196

C4

ؤ

ARABIC LETTER WAW WITH HAMZA ABOVE



197

C5



ARABIC LETTER AIN FINAL FORM



198

C6



ARABIC LETTER YEH WITH HAMZA ABOVE INITIAL FORM



199

C7

ا

ARABIC LETTER ALEF



200

C8



ARABIC LETTER BEH INITIAL FORM



201

C9

ة

ARABIC LETTER TEH MARBUTA



202

CA



ARABIC LETTER TEH INITIAL FORM



203

CB



ARABIC LETTER THEH INITIAL FORM



204

CC



ARABIC LETTER JEEM INITIAL FORM



205

CD



ARABIC LETTER HAH INITIAL FORM



206

CE



ARABIC LETTER KHAH INITIAL FORM



207

CF

د

ARABIC LETTER DAL



208

D0

ذ

ARABIC LETTER THAL



209

D1

ر

ARABIC LETTER REH



210

D2

ز

ARABIC LETTER ZAIN



211

D3



ARABIC LETTER SEEN INITIAL FORM



212

D4



ARABIC LETTER SHEEN INITIAL FORM



213

D5



ARABIC LETTER SAD INITIAL FORM



214

D6

ﺿ

ARABIC LETTER DAD INITIAL FORM



215

D7

ط

ARABIC LETTER TAH



216

D8

ظ

ARABIC LETTER ZAH



217

D9



ARABIC LETTER AIN INITIAL FORM



218

DA



ARABIC LETTER GHAIN INITIAL FORM



219

DB

¦

BROKEN BAR



220

DC

¬

NOT SIGN



221

DD

÷

DIVISION SIGN



222

DE

×

MULTIPLICATION SIGN



223

DF

ع

ARABIC LETTER AIN



224

E0

ـ

ARABIC TATWEEL



225

E1



ARABIC LETTER FEH INITIAL FORM



226

E2



ARABIC LETTER QAF INITIAL FORM



227

E3



ARABIC LETTER KAF INITIAL FORM



228

E4



ARABIC LETTER LAM INITIAL FORM



229

E5



ARABIC LETTER MEEM INITIAL FORM



230

E6



ARABIC LETTER NOON INITIAL FORM



231

E7



ARABIC LETTER HEH INITIAL FORM



232

E8

و

ARABIC LETTER WAW



233

E9

ى

ARABIC LETTER ALEF MAKSURA



234

EA



ARABIC LETTER YEH INITIAL FORM



235

EB

ض

ARABIC LETTER DAD



236

EC



ARABIC LETTER AIN MEDIAL FORM



237

ED



ARABIC LETTER GHAIN FINAL FORM



238

EE

غ

ARABIC LETTER GHAIN



239

EF

م

ARABIC LETTER MEEM



240

F0



ARABIC SHADDA MEDIAL FORM



241

F1

ّ

ARABIC SHADDA



242

F2

ن

ARABIC LETTER NOON



243

F3

ه

ARABIC LETTER HEH



244

F4



ARABIC LETTER HEH MEDIAL FORM



245

F5



ARABIC LETTER ALEF MAKSURA FINAL FORM



246

F6



ARABIC LETTER YEH FINAL FORM



247

F7



ARABIC LETTER GHAIN MEDIAL FORM



248

F8

ق

ARABIC LETTER QAF



249

F9



ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM



250

FA



ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM



251

FB

ل

ARABIC LETTER LAM



252

FC

ك

ARABIC LETTER KAF



253

FD

ي

ARABIC LETTER YEH



254

FE



BLACK SQUARE

zahedpoor
دوشنبه 27 مرداد 1393, 10:16 صبح
جدول کدها که در پست قبل ذکر شده توسط دلفی و کاراکترهای یونیکد قابل تولید نیست. مثلا با گرفتن alt و تایپ هر کدام از شماره ها کدهای بالا تولید نمی گردد. در واقع آنها یونیکد نیست.


تصاویر مشکل به صورت واضح در فایل ضمیمه آورده شده است.

zahedpoor.ir/Downloads/jeem.rar

مشکل اینجاست که دلفی فرقی بین "ججج ج" نمیگذارد و برای همه 1580 برمیگرداند

یوسف زالی
دوشنبه 27 مرداد 1393, 12:52 عصر
سلام.
دو نوع تایپ کاراکتر داریم، یکی که خود ویندوز مسوولیت به هم چسبوندن و مدیریتش رو به عهده می گیره، و یکی که یوزر به عمد اونها رو دستکاری می کنه. این نوع اول استفاده جنرال داره ولی نوع دوم هم قابل استفاده هست.
برای کاری که مد نظرتون هست، باید این کار رو کنید:

1- تبدیل متن استاندارد به متن فرمت شده که بین کاراکترها فرق می ذاره
2- جایگزینی کاراکتر هایی که لازم دارید و اعمال اصلاحات مورد نیازتون
3- تبدیل مجدد به فرمت استاندارد کاراکتر هاتون

برای هر کدام از کانورتور ها هم باید جداگانه تابعی بنویسید.
این تابع باید این خواص رو داشته باشه:

یک کاراکتر ورودی بگیره
یک بولین بگیره که معین می کنه کاراکتر دارای کاراکتر چسبنده قبل از خود هست یا نه
یک بولین دیگه برای این که بفهمه خود کاراکتر به بعد از خودش چسبیده یا نه

این بولین ها هم خودش یک تابع جدا خواهد داشت.



function WindowsChrToIranSystemChr(c: char; PreConnected: boolean = false; PostConnected: boolean = false): char;
.
.
function IsPreConnector(c: char): boolean;
.
.
function IsPostConnector(c: char): boolean;
.
.



مثالی که زدم هدر های تبدیلات برای ایران سیستم بود. همین کار رو باید برای یونیکد کنید.
یک مشکل دیگه هم که با یونیکد خواهید داشت، البته اگر فرمت بندی استاندارد رعایت نشده باشه، اینه که برای کلمات خاص، کاراکتر خاص وجود داره، چیزی مثل گرفتن شیفت به همراه ق که ریال میاره. با این تفاوت که این ریال 4 کاراکتری نیست و یک کاراکتره. در کار شما فکر نمی کنم این مورد وجود داشته باشه ولی در تبدیلاتی مثل پی دی اف این موارد فراوانه.
این مطالب رو ببینید:
http://www.fileformat.info/info/unicode/block/arabic_presentation_forms_a/list.htm
http://www.ssec.wisc.edu/~tomw/java/unicode.html#xE000

zahedpoor
پنج شنبه 30 مرداد 1393, 12:04 عصر
با تشکر از You-See

روتین نوشته شده ای سراغ ندارید؟

یوسف زالی
پنج شنبه 30 مرداد 1393, 12:53 عصر
روتین رایگانی سراغ ندارم.