⑴ java,為什麼讀取文本文件裡面的漢字是亂碼啊,怎麼改啊
漢字的
字元集
不匹配,比如說用UTF-8字舉陪符集去解析GBK字元集的漢字就會變成
亂碼
這里不要用FileReader,這個類用的含答橘是默認字元集去讀取文本,改用InputStreamReader,它的
構造方法
中能夠指定字元集,讓它談團作為BufferedReader的源,就不會亂碼了
hcl=new
BufferedReader(new
InputStreamReader(new
FileInputStream
(wjlj
),
"GBK"));
如果還是亂碼,就把GBK改成UTF-8
⑵ Java讀取linux系統中文文件名時候亂碼,並顯示文件不存在
我記得抄InputStreamReader和OutputStreamWriter不是可以設置編碼的嗎?
方式應該是:OutputStreamWriter writer = new OutputStreamWriter(fop, "UTF-8");
InputStreamReader reader = new InputStreamReader(fip, "UTF-8");
這樣還亂碼?那就二進制讀取就行了。
記得保證整個編譯環境編碼統一。
⑶ Java讀取linux文件名時候亂碼
要不文件名中含有中文字元,可以試試gb2312編碼
⑷ java讀取linux下文件名亂碼
Linux下讀復取文件名亂碼可能的原制因是:
1.linux系統默認編碼不支持中文字元
2.文件名本身是亂碼
解決方案是在讀取文件名的時候,要進行顯式的編碼轉換如下:
FileInputStreamfis=newFileInputStream("fileName");
InputStreamReaderisr=newInputStreamReader(fis,"utf-8");
⑸ JAVA讀寫文件,如何避免中文亂碼
最近在做HTML靜態生成,需要從硬碟上把模版文件的內容讀出來。然後,替換相關標簽寫到指定的文件中。無論是讀寫,都遇到了中文亂碼問題。試過多種方法,發現下面一種可以避免中文亂碼。(無論讀取還是寫入一定要進行編碼轉換。)
1、JAVA讀取文件,避免中文亂碼。
/**
* 讀取文件內容
*
* @param filePathAndName
* String 如 c:\\1.txt 絕對路徑
* @return boolean
*/
public static String readFile(String filePathAndName) {
String fileContent = "";
try {
File f = new File(filePathAndName);
if(f.isFile()&&f.exists()){
InputStreamReader read = new InputStreamReader(new FileInputStream(f),"UTF-8");
BufferedReader reader=new BufferedReader(read);
String line;
while ((line = reader.readLine()) != null) {
fileContent += line;
}
read.close();
}
} catch (Exception e) {
System.out.println("讀取文件內容操作出錯");
e.printStackTrace();
}
return fileContent;
}
2、JAVA寫入文件,避免中文亂碼。
public static void writeFile(String filePathAndName, String fileContent) {
try {
File f = new File(filePathAndName);
if (!f.exists()) {
f.createNewFile();
}
OutputStreamWriter write = new OutputStreamWriter(new FileOutputStream(f),"UTF-8");
BufferedWriter writer=new BufferedWriter(write);
//PrintWriter writer = new PrintWriter(new BufferedWriter(new FileWriter(filePathAndName)));
//PrintWriter writer = new PrintWriter(new FileWriter(filePathAndName));
writer.write(fileContent);
writer.close();
} catch (Exception e) {
System.out.println("寫文件內容操作出錯");
e.printStackTrace();
}
}
我試過寫入的時候用
1、PrintWriter writer = new PrintWriter(new BufferedWriter(new FileWriter(filePathAndName)));
2、PrintWriter writer = new PrintWriter(new FileWriter(filePathAndName));
都不行。
以上代碼經過運行可以避免中文亂碼,關鍵是要編碼轉換。
⑹ java程序讀取properties配置文件出現中文亂碼
你的properties文件編譯過了嗎?凡是有非西歐的字元都應該事先編譯的,具體方法如下:
比如你有一個1.properties文件(含有非西歐字元),你可以在cmd窗口中切換到1.properties文件所在目錄,然後輸入native2ascii -reverse -encoding gb2312 1.properties ActionName_zh_CN.properties
1.properties為轉換之前的文件名 ActionName_zh_CN.properties為轉換之後的文件名,其中-encoding後面的gb2312是可以變的如 utf-8等
⑺ java程序讀取properties配置文件出現中文亂碼
你的properties文件編譯過抄了嗎?凡是有非西歐的字元都應該事先編譯的,具體方法如下:
比如你有一個1.properties文件(含有非西歐字元),你可以在cmd窗口中切換到1.properties文件所在目錄,然後輸入native2ascii
-reverse
-encoding
gb2312
1.properties
ActionName_zh_CN.properties
1.properties為轉換之前的文件名
ActionName_zh_CN.properties為轉換之後的文件名,其中-encoding後面的gb2312是可以變的如
utf-8等
⑻ java讀寫文件,在伺服器顯示亂碼問題
寫入文件的抄時候設置下編襲碼格式即可,之後讀取就不會是亂碼的。
可以通過「FileOutputStream」創建文件實例,之後過「OutputStreamWriter」流的形式進行存儲,舉例:
OutputStreamWriter pw = null;//定義一個流
pw = new OutputStreamWriter(new FileOutputStream(「D:/test.txt」),"UTF-8");//確認流的輸出文件和編碼格式,此過程創建了「test.txt」實例
pw.write("我是要寫入到記事本文件的內容");//將要寫入文件的內容,可以多次write
pw.close();//關閉流
備註:文件流用完之後必須及時通過close方法關閉,否則會一直處於打開狀態,直至程序停止,增加系統負擔。
⑼ java文件名亂碼
修改一下文件的編碼格式,utf-8。
右擊亂碼文件,選擇propertise,在Text file encoding 處修改編碼格式。
⑽ java讀取文件亂碼
那是你選中的文件內容字元編碼與jvm預設的文件編碼不一致,如unix下jvm預設文件編碼一般為iso8859-1,而回你的文件內容可能使用了GBK,可使用如下答代碼:
FileInputStream fis = new FileInputStream(Abs);
InputStreamReader isr = new InputStreamReader(fis, "GBK"); //GBK替換成你文件內容使用的編碼
BufferedReader br = new BufferedReader(isr);