不同環境下的str.getBytes().length!=str.length()區別


不同環境下的str.getBytes().length!=str.length()區別?
在測試環境中判斷是否有全角沒有問題的。在正式環境就不一樣的結果了。
兩個都是Unix系統,但是系統語言不一樣。
有沒有辦法使之在不同環境下運行結果一致?
也就是說要以什麼編碼去取,纔會一致。
頁面是以UTF-8編碼的。
是否str.getBytes('UTF-8').length!=str.length()即可,
還是需要str.getBytes('UNICODE').length!=str.length().
getByte()採用默認的編碼。
使用UTF-8最爲保險:
str.getBytes("UTF-8").length!=str.length();
使用Unicode就有問題了,下面這個不等式不管什麼字符永遠是true。
str.getBytes("Unicode").length!=str.length();


另外不同環境下str.getBytes().length全角字符取得的長度不同
測試:
str.getBytes().length
在windows XP環境下,一個全角字符是2的長度;
在liunx環境下,一個全角字符是3的長度。

解決方法:
由於是在日文的操作系統上的,所以加上編碼 MS932
str.getBytes("MS932").length
這樣兩個系統環境下的長度都是2。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章