为什么在icu4c中,乌尔都语到拉丁语的音译不能正常工作?

时间:2012-11-08 18:51:10

标签: icu transliteration latin

我正在尝试将这行乌尔都语转换为拉丁语,然后将拉丁字符转换为ASCII(通过删除重音等),但似乎缺少一些字符。

为什么还有非拉丁字符(“ہ”,“ے”等)?

$ uconv -x 'Any-Latin'
دفعہ 1: تمام انسان آزاد اور حقوق و عزت کے اعتبار سے برابر پیدا ہوۓ ہیں۔ انہیں ضمیر اور عقل ودیعت ہوئی ہے۔ اس لئے انہیں ایک دوسرے کے ساتھ بھائی چارے کا سلوک کرنا چاہئے

dfʿہ 1: tmạm ạnsạn ậzạd ạwr ḥqwq w ʿzt ḵے ạʿtbạr sے brạbr py̰dạ ہwے̉ ہy̰ں۔ ạnہy̰ں ḍmy̰r ạwr ʿql wdy̰ʿt ہwỷy̰ ہے۔ ạs lỷے ạnہy̰ں ạy̰ḵ dwsrے ḵے sạtھ bھạỷy̰ cẖạrے ḵạ slwḵ ḵrnạ cẖạہỷے

为什么音译器Any-ASCII没有转换为ASCII?

$ uconv -x 'Any-Latin; Latin-ASCII'
دفعہ 1: تمام انسان آزاد اور حقوق و عزت کے اعتبار سے برابر پیدا ہوۓ ہیں۔ انہیں ضمیر اور عقل ودیعت ہوئی ہے۔ اس لئے انہیں ایک دوسرے کے ساتھ بھائی چارے کا سلوک کرنا چاہئے

dfʿہ 1: tmam ansan azad awr hqwq w ʿzt kے aʿtbar sے brabr pyda ہwے̉ ہyں۔ anہyں dmyr awr ʿql wdyʿt ہwyy ہے۔ as lyے anہyں ayk dwsrے kے satھ bھayy charے ka slwk krna chaہyے
$ uconv -x 'Any-Latin; Latin-ASCII' -t latin1
دفعہ 1: تمام انسان آزاد اور حقوق و عزت کے اعتبار سے برابر پیدا ہوۓ ہیں۔ انہیں ضمیر اور عقل ودیعت ہوئی ہے۔ اس لئے انہیں ایک دوسرے کے ساتھ بھائی چارے کا سلوک کرنا چاہئے

Conversion from Unicode to codepage failed at output byte position 2. Unicode: 02bf Error: Invalid character found

1 个答案:

答案 0 :(得分:0)

您可以使用此命令查看这些字符的内容:

uconv -x 'Any-Latin; Latin-ASCII' --to-callback escape-c -t ascii

  • -t ascii:将输出转换为实际ASCII。不仅仅是latin1。
  • --to-callback escape-c:任何无法转换的内容,都可以通过' escape'回调

给了我们这个结果:

df\u02BF\u06C1 1: tmam ansan azad awr hqwq w \u02BFzt k\u06D2 a\u02BFtbar s\u06D2 brabr pyda \u06C1w\u06D2\u0309 \u06C1y\u06BA\u06D4 an\u06C1y\u06BA dmyr awr \u02BFql wdy\u02BFt \u06C1wyy \u06C1\u06D2\u06D4 as ly\u06D2 an\u06C1y\u06BA ayk dwsr\u06D2 k\u06D2 sat\u06BE b\u06BEayy char\u06D2 ka slwk krna cha\u06C1y\u06D2

因此,U+06C1 HEH GOAL例如未被音译。您可以提交CLDR票证。

实际上,已经有了这个:http://unicode.org/cldr/trac/ticket/4387

一旦进行了乌尔都语 - 拉丁语音译,您就可以使用ur-Latin代替Any-Latin。这样就使用了乌尔都语特定规则而不仅仅是阿拉伯语脚本规则。

如果我是你,我会跟进4387票。