【问题标题】:Java encode special character in a String with UTF-8 characterJava 使用 UTF-8 字符对字符串中的特殊字符进行编码
【发布时间】:2016-11-26 01:50:21
【问题描述】:
 String original = "This is my string valúe";

我正在尝试将上述字符串编码为等效的 UTF-8,但仅将特殊字符 (ú) 替换为 -- "ú ;"在这种情况下。

我已尝试使用以下内容,但出现错误:

输入不是正确的UTF-8,表示编码!Bytes: 0xFA 0x20 0x63 0x61

代码:

    String original = new String("This is my string valúe");

    byte ptext[] = original.getBytes("UTF-8");
    String value = new String(ptext, "UTF-8"); 

    System.out.println("Output : " + value);

    This is my string valúe

【问题讨论】:

  • @user4015632 为什么投反对票
  • 投反对票的原因是什么?

标签: java utf-8


【解决方案1】:

你可以使用String.replace(CharSequence, CharSequence) 和格式化的io 像

String original = "This is my string valúe";
System.out.printf("Output : %s%n", original.replace("ú", "ú"));

哪些输出(我想你想要的)

Output : This is my string valúe

【讨论】:

  • 如果我有另一个特殊字符,如“ñ”。除了硬编码,有没有一种方法可以将任何特殊字符转换为等效的 UTF-8 值?
  • 看看StringEscapeUtilsescapeHtml
  • StringEscapeUtils from package org.apache.commons.lang3 is deprecated 并改用StringEscapeUtils from package org.apache.commons.text
【解决方案2】:

您似乎想使用 XML 字符实体。

Appache Commons Lang 有一个方法(在 StringEscapeUtils 中)。

【讨论】:

    【解决方案3】:

    我试图将上述字符串编码为等效的 UTF-8,但仅将 > 特殊字符 ( ú ) 替换为 -- "ú ;"在这种情况下。

    我不确定“ú ;”是什么编码是,但是您是否尝试过查看URLEncoder 课程?它不会完全按照您所要求的方式对字符串进行编码,但它会消除令人毛骨悚然的字符。

    【讨论】:

    • URLEncoder 类用所有 + 符号等对纯文本进行编码,这真的不起作用。但是StringEscapeUtils更适合一个Html页面的文字或标题
    【解决方案4】:

    请您尝试以下几行:

     byte ptext[] = original.getBytes("UTF8");
     String value = new String(ptext, "UTF8"); 
    

    【讨论】:

    • 我仍然得到这个 --> 这是我的字符串 valúe 。所需的解决方案 - > 这是我的字符串 valúe
    猜你喜欢
    • 2020-09-20
    • 1970-01-01
    • 1970-01-01
    • 2011-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-29
    相关资源
    最近更新 更多