我有一个UTF-8格式的字符串。我想将其转换为干净的ANSI格式。怎么做?
答案 0 :(得分:2)
您可以这样做:
new String("your utf8 string".getBytes(Charset.forName("utf-8")));
以这种格式将UTF8
的4个字节转换为ANSI
答案 1 :(得分:0)
一般不可能将UTF-8转换为ANSI,因为ANSI只有128个字符(7位),而UTF-8最多有4个字节。这就像将long转换为int,在大多数情况下会丢失信息。
答案 2 :(得分:0)
您可以在此处使用这样的Java函数将UTF-8转换为ISO_8859_1(似乎是ANSI的子集):
private static String convertFromUtf8ToIso(String s1) {
if(s1 == null) {
return null;
}
String s = new String(s1.getBytes(StandardCharsets.UTF_8));
byte[] b = s.getBytes(StandardCharsets.ISO_8859_1);
return new String(b, StandardCharsets.ISO_8859_1);
}
这是一个简单的测试:
String s1 = "your utf8 stringáçﬠ";
String res = convertFromUtf8ToIso(s1);
System.out.println(res);
打印输出:
your utf8 stringáç?
ﬠ 字符丢失,因为它不能用ISO_8859_1表示(使用UTF-8编码时有3个字节)。 ISO_8859_1可以表示á和ç。