[英]Convert iso8859-1 to utf8 in java
對於iso8859-1編碼的String,將其轉換為utf8的最優雅的方法是什么?
String convertedString = new String(s.getBytes("UTF-8"), "UTF-8"); //is this correct, elegant etc?
注意我知道已經有與此問題類似的問題,但是我發現的問題答案模棱兩可,並且無法顯示整個轉化過程。
編輯:我的問題更詳細的描述
//message is a String
//msg.setContent is this method http://docs.oracle.com/javaee/6/api/javax/mail/internet/MimeMessage.html#setContent%28java.lang.Object,%20java.lang.String%29
msg.setContent(message, "text/plain");
msg.addHeader("Content-Type", "text/plain; charset=\"utf-8\"");
在郵件客戶端中接收到此消息時,標頭顯示utf8,但是內容(即消息字符串)實際上是經過iso8859-1編碼的,這導致諸如åäö之類的字符無法正確呈現。 我想知道的是如何對utf8內容進行編碼。
編輯II :(答案)原來是將編碼設置為iso8859-1的MimeMessage.java類,而不是使用MimeMessage.setContent而是另一種方法MimeMessage.setText(String text,String charset); 這使我可以將編碼設置為utf8。
您不會將字符串從一種編碼轉換為另一種編碼。 String
是一系列char
,僅此而已。 就其價值而言,它可能是一系列的信鴿。 鴿子沒有編碼。 char
也沒有。
您要做的是在使用Writer
時將其轉換為字節。 (或使用Reader
時從字節Reader
)。 在這一點上,編碼( Charset
)很重要。
不,這是不正確的。 字符串始終為UTF-16。 您只能編碼/解碼字節數組。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.