Java使用UTF-8字符编码将特殊字符编码到字符串中

5
 String original = "This is my string valúe";

我想将上述字符串编码为UTF-8等效字符,但仅替换特殊字符(ú),在这种情况下替换为--“&#250 ;”。

我尝试使用以下代码,但是出现错误:

输入不是正确的UTF-8编码,请指定编码!字节: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 为什么要点踩? - vyeluri5
下投票的原因是什么? - vyeluri5
4个回答

3
你可以使用 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

3
如果我有另一个特殊字符,例如 "ñ",是否有一种方法可以将任何特殊字符转换为其等效的 UTF-8 值,而不是硬编码它们? - vyeluri5
3
请看 StringEscapeUtilsescapeHtml。其中StringEscapeUtils是一个常用的Java语言工具包,而escapeHtml方法可以用来将HTML文本中的特殊字符转义为对应的HTML实体,从而避免在渲染时产生意外的结果。 - Elliott Frisch
2
来自org.apache.commons.lang3包的StringEscapeUtils已经弃用,请使用来自org.apache.commons.text包的StringEscapeUtils - Cnf271

0

看起来你想使用XML字符实体。

Appache Commons Lang有一个方法可以做到这一点(在StringEscapeUtils中)。


0
我正在尝试将上述字符串编码为UTF-8等效字符,但仅用"&#250 ;"替换特殊字符(ú)。 我不确定"&#250 ;"是什么编码,但您是否尝试查看URLEncoder类?它不能完全按照您的要求编码字符串,但可以去除奇怪的字符。

URLEncoder类将纯文本编码为所有+号等字符,但实际上并不起作用。但是StringEscapeUtils更适合于HTML页面文本或标题。 - vyeluri5

-3

请尝试以下代码:

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

我仍然得到这个 -> 这是我的字符串值。期望的解决方案 -> 这是我的字符串valúe。 - vyeluri5

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接