gpt4 book ai didi

java - StringEscapeUtils escapeJava 正在转义井号

转载 作者:行者123 更新时间:2023-11-30 07:57:09 27 4
gpt4 key购买 nike

我正在尝试对字符串进行转义以确保转义特殊字符。

使用

StringEscapeUtils.escapeJava("😀")  escapes to \\uD83D\\uDE00

StringEscapeUtils.escapeJava("% ! @ $ ^ & * ") doesn't escape any of the characters

StringEscapeUtils.escapeJava("£") escapes to \\u00A3

我可以理解表情符号包含反斜杠,因此会被转义,但为什么井号会被转义,我该如何阻止它被转义?

最佳答案

StringEscapeUtils.escapeJava() 的文档对“Java 字符串规则”到底是什么含糊不清。

我猜它指的是 JLS Chapter 3 中的位,它说:

Programs are written in Unicode (§3.1), but lexical translations are provided (§3.2) so that Unicode escapes (§3.3) can be used to include any Unicode character using only ASCII characters.

ASCII (ANSI X3.4) is the American Standard Code for Information Interchange. The first 128 characters of the Unicode UTF-16 encoding are the ASCII characters.

所以这可能意味着转义字符串,以便它可以只使用 ASCII 字符编写

%, !, @, $, ^, >&* 都是ASCII 字符。它们的值小于 128(即它们在 7 位 block 中)。

£ 不是 ASCII 字符:在 ISO8859-1 中,它被编码为 163 (0xA3),位于 7 位 ASCII block 之外。

如果您打开一个在字符串文字中带有 £ 的文件,如果该编辑器没有正确设置字符编码,它可能会呈现为其他内容。例如,如果它在 ISO8859-2 中解释,它可能是 Ł

为了明确起见,英镑符号因此被转义。

how do I stop it from being escaped

你不能,使用这个方法;你需要找到一个替代方案。您唯一可以做的就是再次将字符串中的 \u00A7 替换为 £

关于java - StringEscapeUtils escapeJava 正在转义井号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41549457/

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