gpt4 book ai didi

java - Java中的特殊字符

转载 作者:行者123 更新时间:2023-12-03 18:36:13 26 4
gpt4 key购买 nike

我有一个正在验证的表单 (struts 1),在验证期间我被要求删除 MS Word 的 curl 单引号和双引号。看起来是一个如此简单的请求,我为此绞尽脑汁。

我的测试文本是' “”

首先,我发现当我在调试器中运行我的代码并观察 IntelliJ 认为值是什么时,它显示 â\u0080\u0099 â\u0080\u009C â\u0080\u009D 并且 â\u0080 似乎是非打印字符。

我使用一段代码迭代字段中文本的 StringBuilder 并测试文本中的每个字符。它替换或删除了一些字符,如下所示:

switch (origCharAsInt) {

case ((int)'\u00C2'): sbOriginal.deleteCharAt(isb); break; // weird Word A with the caret over it
case ((int)'\u00C3'): sbOriginal.deleteCharAt(isb); break; // weird Word A with the tilde over it
case ((int)'\u00E2'): sbOriginal.deleteCharAt(isb); break; // weird Word a with the caret over it

case ((int)'\u0099'): sbOriginal.setCharAt(isb, '\''); break; // Word single quote
case ((int)'\u009C'): sbOriginal.setCharAt(isb, '"'); break; // Word left double quote
case ((int)'\u009D'): sbOriginal.setCharAt(isb, '"'); break; // Word right double quote

case ((int)'\u2018'): sbOriginal.setCharAt(isb, '\''); break; // left single quote
case ((int)'\u2019'): sbOriginal.setCharAt(isb, '\''); break; // right single quote
case ((int)'\u201A'): sbOriginal.setCharAt(isb, '\''); break; // lower quotation mark

case ((int)'\u201C'): sbOriginal.setCharAt(isb, '"'); break; // left double quote
case ((int)'\u201D'): sbOriginal.setCharAt(isb, '"'); break; // right double quote
case ((int)'\u201E'): sbOriginal.setCharAt(isb, '"'); break; // double low quotation mark

case ((int)'\u2039'): sbOriginal.setCharAt(isb, '\''); break; // Single Left-Pointing Quotation Mark
case ((int)'\u203A'): sbOriginal.setCharAt(isb, '\''); break; // Single right-Pointing Quotation Mark

default: break;

这似乎有效,因为它取代了一些更令人震惊的废话,并且该表单现在似乎包含 ' ""。但是,如果我再次保存,IntelliJ 认为该字段包含 \u0080\u0080\"\u0080\"

所以我又添加了几个案例来删除那些 Â 字符。但我对 \u0080 字符的持久性感到困惑。

我尝试添加更多案例以尝试删除它们,但它们没有用。

case ((int)'\u0080'): sbOriginal.deleteCharAt(isb); break; // another weird Word non-printing char
case ((int)'\u0082'): sbOriginal.deleteCharAt(isb); break; // another weird Word non-printing char
case ((int)'\u0083'): sbOriginal.deleteCharAt(isb); break; // another weird Word non-printing char
case ((int)'\u0000'): sbOriginal.deleteCharAt(isb); break; // why are these weird symbols showing up?

任何帮助/解释将不胜感激。

最佳答案

您需要正确转义 HTML。 Unicode 不是这里的答案。 This link是你的果酱。

关于java - Java中的特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12590428/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com