首页 > 解决方案 > 如何在 Java 中删除字符串中 Unicode 杂项符号的 Unicode 十进制值

问题描述

我正在努力删除或替换在 Web 应用程序的文本区域字段中使用的字符串(在 Java 中)中的杂项符号。发生的情况是,当我使用下面的内容时,内容被转换为 unicode 十进制表示值.

内容为: String a = 'Last Search Results Bulletin Board Validations ⛔ 0 ⚡ 1 ⚠ 6 ? 0'

当我将该内容保存在文本区域(即网页中)时,该符号将保存为 ⛔,⚡,⚠。

我想删除 unicode 表示值(或)以正确的格式保存内容,以便我可以将正确的数据保存到数据库中。

如何从字符串中删除符号(“⛔”或“⚡”或“⚠”)的 unicode 表示值?实际上,我尝试使用正则表达式来替换下面 s.replaceAll("&#[9728 - 9983];", "") 中的那些表示。范围 [9728 - 9983] 表示杂项符号 unicode 十进制值范围。但它没有正确替换它。我可以使用哪个正则表达式?或者可以使用哪种方法来删除字符串中的值?

(或者)

如何将 unicode 表示值('⛔' 或 '⚡' 或 '⚠')再次转换为字符串中的相同符号(⛔、⚡、⚠)?

标签: javastringunicodesymbols

解决方案


您需要以 UTF-8 呈现页面,并在表单中说服务器接受表单数据中的 UTF-8。(否则&#...;将发送实体而不是 Unicode 符号。)

<form action="..." accept-charset="ISO-8859-1">

在 HTML 5 中:

<meta charset="UTF-8">

旧版 HTML:

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

也应该相应地设置响应头:

Content-Type: text/html; charset=UTF-8

response.setContentType("text/html; charset=UTF-8");
response.setCharacterEncoding("UTF-8");

推荐阅读