[英]Java: toLowercase messes up the unicode symbols
我的代碼:
// Read the turkish file contents to the variable currentLine
currentLine = currentLine+"\n\n"+currentLine.toLowerCase();
// Write the contents to a new file
輸出:
Yukar馬維斛淺黃yağız揭掉yaratıldık壹岐ARASI在·奧格魯yaratılmışINSANoğullarıüzerecdadı布明哈卡ISTE哈卡塔赫oturmuşoturarak蒂爾克小米ülkeTURE伊達爾edivermişTANZ edivermis DORT taraf熟知düşman綜管提問者sevk EDIP DORT taraf kavmi熟知ITAAaltınaalmış熟知穆蒂kılmışBaşlı başeğdirmişdizli dizçöktürmüş
yukar mavigákasa.y ya.z yer yarat.ld.k iki aras。在oïluyarat.lm.nsan oullullar.zer ecdad.bum.n haka ha ha tur ot mill mill ura i rk man man man man man man man man man mill lm lm lm lm lm lm lm lm lm he k e e di di di
我嘗試了toLowercase(Locale.getDefault())和toLowercase(Locale.ROOT)。 我仍然得到相同的輸出。 為什么函數返回無效符號?
謝謝。
我認為問題出在讀寫文件時未聲明字符編碼。 在這種情況下,Java會假定您使用的平台默認字符集可能不合適。
如果不確定,請使用也涵蓋土耳其語的UTF-8(當然,它需要與您實際要讀取的文件相匹配)。
您可能還需要在調用toLowercase時指定土耳其語區域設置,因為確切的規則可能取決於此文本所使用的語言(我不熟悉土耳其語,它可能已經可以使用默認值了)。
但是,文件的一半如何正確編碼呢?
第一行與您讀入的符號相同。未完成任何計算。 即使使用錯誤的編碼也可以。 對於小寫轉換,Java需要知道正確的編碼。
現在,奇怪的角色消失了。 新的“?” 字符出現在整個輸出中
中途。 現在,您已經在Reader上指定了輸入字符集,Java可以理解您的土耳其語字符了。 但是它仍然無法輸出它們,因此將其替換為“?”。 您還需要在Writer上設置輸出字符集。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.