簡體   English   中英

如何在Java中將字符串UTF-8轉換為ANSI?

[英]How to convert a string UTF-8 to ANSI in java?

我有一個UTF-8格式的字符串。 我想將其轉換為干凈的ANSI格式。 怎么做?

您可以執行以下操作:

new String("your utf8 string".getBytes(Charset.forName("utf-8")));

以這種格式, UTF8 4個字節轉換為ANSI 8個字節

通常無法將UTF-8轉換為ANSI,因為ANSI僅具有128個字符(7位),而UTF-8最多具有4個字節。 這就像將long轉換為int,在大多數情況下,您會丟失信息。

您可以在此處使用這樣的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可以表示áç

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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