67 java utf-8 iso-8859-1 character-encoding java-me
有谁知道如何将字符串从ISO-8859-1转换为UTF-8并返回Java?
我从网上获取一个字符串并将其保存在RMS(J2ME)中,但我想保留特殊字符并从RMS获取字符串,但使用ISO-8859-1编码.我该怎么做呢?
eri*_*son 95
一般来说,你不能这样做.UTF-8能够编码任何Unicode代码点.ISO-8859-1只能处理其中的一小部分.因此,从ISO-8859-1到UTF-8的转码没有问题.当找到不支持的字符时,从UTF-8向后转到ISO-8859-1将导致文本中出现"替换字符"( ).
要转码文字:
byte[] latin1 = ...
byte[] utf8 = new String(latin1, "ISO-8859-1").getBytes("UTF-8");
Run Code Online (Sandbox Code Playgroud)
要么
byte[] utf8 = ...
byte[] latin1 = new String(utf8, "UTF-8").getBytes("ISO-8859-1");
Run Code Online (Sandbox Code Playgroud)
您可以使用较低级别的CharsetAPI 进行更多控制.例如,您可以在找到无法编码的字符时引发异常,或者对替换文本使用不同的字符.
Bah*_*mir 13
哪个对我 有用:("üzümbağları"是用土耳其语写的正确的)
将ISO-8859-1转换为UTF-8:
String encodedWithISO88591 = "üzüm baÄları";
String decodedToUTF8 = new String(encodedWithISO88591.getBytes("ISO-8859-1"), "UTF-8");
//Result, decodedToUTF8 --> "üzüm ba?lar?"
Run Code Online (Sandbox Code Playgroud)
将UTF-8转换为ISO-8859-1
String encodedWithUTF8 = "üzüm ba?lar?";
String decodedToISO88591 = new String(encodedWithUTF8.getBytes("UTF-8"), "ISO-8859-1");
//Result, decodedToISO88591 --> "üzüm baÄları"
Run Code Online (Sandbox Code Playgroud)
如果你有String,你可以这样做:
String s = "test";
try {
s.getBytes("UTF-8");
} catch(UnsupportedEncodingException uee) {
uee.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
如果你有一个"破" String,你做错了什么,转换String到String另一种编码defenetely不是要走的路!您可以将a转换String为a byte[],反之亦然(给定编码).在Java String中,AFAIK是用AFAIK编码的,UTF-16但这是一个实现细节.
假设你有一个InputStream,你可以在a中读取byte[]然后将其转换为String使用
byte[] bs = ...;
String s;
try {
s = new String(bs, encoding);
} catch(UnsupportedEncodingException uee) {
uee.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
甚至更好(感谢erickson)使用InputStreamReader:
InputStreamReader isr;
try {
isr = new InputStreamReader(inputStream, encoding);
} catch(UnsupportedEncodingException uee) {
uee.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
小智 5
这是字符串输出的简单方法(我创建了一个方法来执行此操作):
public static String (String input){
String output = "";
try {
/* From ISO-8859-1 to UTF-8 */
output = new String(input.getBytes("ISO-8859-1"), "UTF-8");
/* From UTF-8 to ISO-8859-1 */
output = new String(input.getBytes("UTF-8"), "ISO-8859-1");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return output;
}
// Example
input = "Música";
output = "Música";
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
211603 次 |
| 最近记录: |