簡體   English   中英

在Java中將iso8859-1轉換為utf8

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM