0

我在我的 php 中写了这段代码

echo ord("ت").' - '.ord("ت")."<br />";
echo ord("و").' - '.ord("و")."<br />";
echo ord("ك").' - '.ord("ک")."<br />";
echo ord("ض").' - '.ord("ض")."<br />";
echo ord("ي").' - '.ord("ی")."<br />";
echo ord("ح").' - '.ord("ح")."<br />";
echo ord("م").' - '.ord("م")."<br />";
echo ord("ن").' - '.ord("ن")."<br />";
echo ord("ا").' - '.ord("ا")."<br />";
echo ord("أ").' - '.ord("آ")."<br />";
echo ord("ث").' - '.ord("ث")."<br />";
echo ord("ع").' - '.ord("ع")."<br />";
echo ord("ب").' - '.ord("ب")."<br />";

第一个是阿拉伯字符,第二个是波斯语,但代码的结果是:

216 - 216
217 - 217
217 - 218
216 - 216
217 - 219
216 - 216
217 - 217
217 - 217
216 - 216
216 - 216
216 - 216
216 - 216
216 - 216

这表明很多字符具有相同的 ASCII 码,我必须从 ascii 码中检测语言,但似乎这是不可能的!

4

1 回答 1

2

Unicode 编号是相同的,因为 Unicode 不按语言区分字符。波斯语使用阿拉伯文字(书写系统),但添加了与阿拉伯语有关的内容,例如波斯语中使用的字母“ت”与阿拉伯语中使用的“ت”完全相同,U+062A ARABIC LETTER TEH。

您无法仅通过查看字符来区分语言。您只能决定给定的字符串可能是某些语言的表达式,可能是几十或几百种语言的集合。

除此之外,正如@Musa 在评论中所说,ord仅为 ASCII 字符定义,阿拉伯字母不属于 ASCII。ASCII 是一组 128 个字符,由基本的拉丁字母、常用数字、标点符号和特殊字符的集合以及一些控制字符组成。所以在这里测试ord是没用的。

于 2013-09-07T09:11:03.953 回答