簡體   English   中英

Java:toLowercase弄亂了unicode符號

[英]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上設置輸出字符集。

我認為您將需要在toString()方法中傳遞本地信息。 這是 Java官方文檔中的一個示例 ,以土耳其語為示例。 如果沒有語言環境信息,則toString()方法將使用默認語言環境。

這是創建土耳其語區域設置的方法,

Locale trlocale= Locale.forLanguageTag("tr_TR");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM