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 عصر
روتین رایگانی سراغ ندارم.
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.