2012-11-08 77 views
0

我試圖將這行烏爾都語轉換爲拉丁語,然後將拉丁字符轉換爲ASCII(通過刪除重音符等),但它似乎缺少一些字符。爲什麼從烏爾都語到拉丁語的音譯不能在icu4c中正確使用?

爲什麼還有非拉丁字符(「ہ」,「ے」等)?

$ 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 

回答

0

你可以看到這些字符是用這個命令:

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

  • -t ascii:將輸出轉換爲ASCII實際。不只是latin1。
  • --to-callback escape-c:任何不是可轉換,經歷了 '逃離' 回調

這給了我們這樣的結果:

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。

相關問題