我有一個struts2 web應用程序,它接受許多不同字符集中的POST和GET請求,將它們轉換爲utf-8,在屏幕上顯示正確的utf-8字符,然後將它們寫入utf-8數據庫。參數struts2中的字符集轉換
我已經嘗試了至少5種不同的方法來做簡單的無損字符集轉換的Windows-1250到utf-8開始,所有這些都不起作用。 Utf-8是「更大的一套」,它應該沒有問題(至少這是我的理解)。
你可以建議如何做一個從windows-1250到utf-8的字符集轉換嗎?struts2可能會用params charset做一些奇怪的事情,這可以解釋爲什麼我看起來無法正確。
這是我最新的嘗試:
String inputData = getSimpleParamValue("some_input_param_from_get");
Charset inputCharset = Charset.forName("windows-1250");
Charset utfCharset = Charset.forName("UTF-8");
CharsetDecoder decoder = inputCharset.newDecoder();
CharsetEncoder encoder = utfCharset.newEncoder();
String decodedData = "";
try {
ByteBuffer inputBytes = ByteBuffer.wrap(inputData.getBytes()); // I've tried putting UTF-8 here as well, with no luck
CharBuffer chars = decoder.decode(inputBytes);
ByteBuffer utfBytes = encoder.encode(chars);
decodedData = new String(utfBytes.array());
} catch (CharacterCodingException e) {
logger.error(e);
}
什麼任何想法設法得到這個工作?
謝謝你,最好的問候,
博佐
我得到HTTP參數中的字符集名稱,從這我現在必須知道如何轉換輸入參數(從Win1250到UTF-8)。 – bozo 2010-03-30 18:40:16
順便說一句,我的網絡應用程序中有類似的過濾器,但這對我來說還不夠。所以現在我已經在Struts之前放置了一個PHP過濾器,它將源碼字符集中的iconv轉換爲UTF-8,並且完美地工作。我無法相信在Java中完成同樣的事情有多複雜 - 很難做到。 – bozo 2010-03-30 18:43:35