JAVA中的特殊字符

时间:2013-06-04 14:18:36

标签: java sql-server jsp internationalization

สวัสดีMr.Java Sp'e c'i'a'l'''

我尝试使用下面的代码解析String但我无法做到 只是它显示错误的值。

String s = "สวัสดี Mr.Java Sp'e c'i'a'l'' '"";
s = s.replaceAll("'", "'");
//s = s.replaceAll("'", "''");
StringEscapeUtils.escapeHtml(s);

我试图从JSP获取并保存在SQL Server DB中并使用JSP和更新进行显示。 但有时在JSP中它会显示转换后的& an in jsp,而不是Special 字符。

  

非常简单就在这里我在StackOverflow中展示了这个字符串(สวัสดีMr.Java Sp'e c'i'a'l''')   保存在他们的数据库和显示,并允许我更新这是我   想要的。

1 个答案:

答案 0 :(得分:1)

行。那么让我们来看看你的代码做了什么:

// line 1
String s = "สวัสดี Mr.Java Sp'e c'i'a'l'' '";

我们有一个包含各种国际字符的字符串......以及一些"'"个字符。

// line 2 
s = s.replaceAll("'", "'");

假设这些字符真的是"'"个字符,我们将用{/ 1}}替换所有带有XML / HTML字符实体的实例:

"'"

所以......

"สวัสดี Mr.Java Sp'e c'i'a'l'' '"

这将使用字符引用替换所有活动的HTML / XML字符。这包括您之前插入的&符号// line 3 s = StringEscapeUtils.escapeHtml(s); 。结果如下:

"&"

"&#xxxx;&#xxxx;&#xxxx;&#xxxx; Mr.Java Sp'e c'i'a'l'' '" 数字字符引用对这些泰语(?)字符进行编码。)

当您将其嵌入HTML文档并显示它时,您将看到“สวัสดีMr.Java Sp& c& i& a& l& amp;& amp;& amp;者;“


看看发生了什么?你有HTML转义你的HTML转义叛逆者!!


那么你真的需要做什么?

  1. 不需要用&#xxxx;替换撇号。撇号在HTML文本中是合法的。

  2. 应该不需要添加HTML转义,以便您可以将文本存储在数据库中:

    • 任何现代数据库都允许您存储Unicode字符串而无需任何特殊编码。

    • 如果您试图阻止数据库的SQL解析器被您正在存储的文本中的引号弄糊涂,那么您的操作方式是错误的。 right 执行此操作的方法是使用',向查询添加参数占位符,并使用PreparedStatement方法提供参数值。 PreparedStatement.setXxx(或其他)将处理需要执行的任何SQL转义。