gpt4 book ai didi

java - 如何 HTML 转义 Java 字符串中的花括号

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

我有一个包含大引号的字符串。我想用 HTML 实体替换它们,以确保它们不会混淆其他下游系统。对于我的第一次尝试,我只是为要替换的字符添加了匹配,直接在我的代码中输入它们:

public static String escapeXml(String s) {
StringBuilder sb = new StringBuilder();
char characters[] = s.toCharArray();
for ( int i = 0; i < characters.length; i++ ) {
char c = characters[i];
switch (c) {
// other escape characters deleted for clarity
case '“':
sb.append("&#8220;");
break;
case '”':
sb.append("&#8221;");
break;
case '‘':
sb.append("&#8216;");
break;
case '’':
sb.append("&#8217;");
break;
default:
sb.append(c);
break;
}
}
return sb.toString();
}

这在我的 Mac 上编译并运行良好,但是当我们的 CI 服务器(在 Linux 上运行)尝试构建它时,它阻塞了:
Out.java:[347,16] duplicate case label

显然,Linux 机器上的构建链的某些部分无法识别和区分这些花哨的字符。

我的下一个尝试是使用 Unicode 转义。不幸的是,这甚至无法在我的 Mac 上编译:
...
case '\u8220':
sb.append("&#8220;");
break;
case '/u8221':
sb.append("&#8221;");
break;
...

我的编译器抛出了这个提示:
Out.java:[346,21] unclosed character literal

我对如何进行这种替换并让它跨平台可靠地工作感到困惑。有人有任何指示吗?提前致谢。

最佳答案

您可以使用文字字符(即 '‘' ),但您的构建过程需要在编译期间指定正确的源编码。 javac命令选项是 -encoding . (Ant 的javac 任务的属性是相同的。)这应该与您的IDE 在保存文件时使用的任何编码相匹配。

例如,如果您的 IDE 使用 UTF-8,但构建机器使用其平台默认编码 US-ASCII,则特殊字符将被解码为 ? .由于现在多个案例具有相同的标签,因此您会收到原始错误消息。

关于java - 如何 HTML 转义 Java 字符串中的花括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1731917/

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