Property 文件中 使用的編碼方式根據機器本身的設置可能是GBK或者UTF
而在Java程序中讀取Property文件的時候使用的是Unicode編碼方 式 這種編碼方式不同會導致中文亂碼
因此需要將Property文件中的中文字元轉化成Unicode編碼方式才能正常顯示中文
Java提供了專門的工具對Property文件進行Unicode轉化 這種工具就是native ascii 它在JDK安裝環境的bin目錄下
native ascii 工具將帶有本機編碼字元(非拉丁 和非單一碼字元)的文件轉換成帶有Unicode編碼字元的文件
假設需要轉化的屬性文件為 D:src esources properties(含有中文字元)
轉化後的屬性文件為 D:classes esources properties(中文字元統一轉化為Unicode)
那麼使用如下命令
JAVA_HOMEin ative ascii encoding GBK D:src esources properties D:classes esources properties
lishixin/Article/program/Java/hx/201311/26296
B. 如何使用Java代碼獲取文件,文件流或字元串的編碼方式
簡單判斷是UTF-8或不是UTF-8,因為一般除了UTF-8之外就是GBK,所以就設置默認為GBK
C. java有沒有那個方法 獲取文件保存的編碼方式啊
如果一個文本文件被「文件編輯器」編輯過,可能會帶上一些標記 ,就是文件的前幾個位元組說明了它的字元集編碼方式,但並不是所有編輯器都會這么做,也可能在保存時由人來決定是否放置標記。
因此理論上說如果編輯器未放置任何標記是不可能知道文件的原始字元編碼的,就好像你初次看一份密碼加密過的文件時你也不可能知道它是什麼加密方式一樣,因為編碼方式並不會和編碼的數據放在一起的。
正常的方法是當你讀取一個文件時,應該有人已經告訴了你這個文件是字元集是什麼。這個過程應該是人工決定的,比如人們把它寫在一個配置文件中,或者約定了整個軟體只使用 UTF8 或 GBK 一種編碼方式。作為一個通用型的軟體推薦使用 UTF8 而不是 GBK,因為當你保存一個人名時你也知道這片神奇的土地上就是有些父母給孩子取名字時用一些中小學生字典上都找不到的字。這時GBK是無法保存這個漢字的。你不希望將來自己的軟體碰到這個問題吧,解決的辦法就是這么簡單,用 UTF8就可以了。
D. java代碼如何獲取文件的編碼格式
若想實現更復雜的文件編碼檢測,可以使用一個開源項目cpdetector,它所在的網址是:http://cpdetector.sourceforge.net/。它的類庫很小,只有500K左右,cpDetector是基於統計學原理的,不保證完全正確
E. java怎麼獲取文件編碼格式
沒錯,就這樣做,文件格式和文件內容,不是這樣的。
普通文件,開始就是文件內容了。
有編碼的,開頭先是編碼的定義,正如判斷語句所寫的那樣
F. java 文件上傳中如何獲取上傳文件的字元集編碼
看看這篇
http://www.javaeye.com/topic/266501
還有這個
http://blog.csdn.net/crackcell/archive/2007/11/22/1898128.aspx
這個是jchardet的地址
http://sourceforge.net/projects/jchardet/
也有人寫了用
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStreamReader;
public class FileCharset {
public static void main(String[] args) throws FileNotFoundException {
InputStreamReader isr = new InputStreamReader(new FileInputStream(
"Service02.asp"));
System.err.println(isr.getEncoding());
BufferedReader br = new BufferedReader(isr);
}
}
但是不起作用
getEncoding gives you the encoding the reader is using, not what the file is
using. The problem is that there isn't anything in the file that says what
encoding it is using. You can look at some byte patterns to try to
determine whether it's UTF-8, UTF-16BE, or whatever but there's no perfect
rule for it.
G. java 獲取 file 的編碼(utf-8或者gbk)
在java中有一個設定的內部語言設置,比如gbk或utf-8,
jvm中的字元串只能以一種編碼方專式存在,你的命屬題就是偽命題。
當然存在硬碟裡面就不一樣了,可以以gbk方式存儲,也可以以utf-8方式存儲。
在存為文件的時候,使用
string.getbytes("charset")方式獲取byte流,存入硬碟。
H. java中有沒有獲得字元的編碼形式的方法啊
沒有,編碼方式一般你自己最清楚的
你若從資料庫獲得的字元串是亂碼,可以從資料庫入手,得到資料庫的字元串存儲的編碼方式,然後你在程序中在解碼就好了
I. java怎麼獲取txt文件編碼格式
文件頭,有編碼格式信息的,讀出來,判斷
一下
如
(fs[0]
==
0xEF
&&
fs[1]
==
0xBB
&&
fs[2]
==
0xBF)
是UTF-8的