ปัญหาเก่า:
อ่านความคิดเห็นของ Kobylkin ในหัวข้อนี้ ...
https://sourceware.org/bugzilla/show_bug.cgi?id=2872#c2
ด้วย
http://www.yqcomputer.com/422_10096_1.htm
จำ Cygwin <1.7 ไม่มีโลแคล
แต่ในกรณีของคุณดูเหมือนว่าท้องถิ่นจะตีความกัน ; มันเป็นTransliteration
กระบวนการiconv บน Cygwin ผู้ตัดสินใจที่จะแปลงอักขระหนึ่งตัวเป็น 2 (หรือมากกว่า) ส่วนประกอบแทนหนึ่งตัว ในตัวอย่างของคุณคุณจะได้รับตัวอักษรทับศัพท์รวมถึงตัวดัดแปลงตัวอักษรทับศัพท์ (สำเนียง, การกำหนดค่าแบบอักษร, ตัวหนอน, จุด, ฯลฯ ) หากมี
Å Ä Ö Õ Ũ É Á
A "A "O ~O ~U 'E 'A
Transliteration:
When a character cannot be represented in the target character set,
it can be approximated through one or several similarly looking characters
(https://www.gnu.org/software/libiconv/)
คุณสามารถดูlibiconv.dll
translit.defแสดงแหล่งที่มาของตารางการถอดเสียง (translit.h) ที่สร้างขึ้นในระหว่างกระบวนการ "สร้าง" ตารางนั้นแสดงให้เห็นว่าสิ่งที่ Cygwin ทำนั้นถูกต้องจริง
echo "ÅÄÖÕŨÉÁ" | iconv -f utf-8 -t ascii//TRANSLIT | perl -ne 'foreach (split //) { print "$_" if /\w/; } print "\n";'
ซึ่งจะระงับอักขระที่ไม่ใช่คำทั้งหมด (\w
)