首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >StringEscapeUtils escapeJava正在逃离磅号

StringEscapeUtils escapeJava正在逃离磅号
EN

Stack Overflow用户
提问于 2017-01-09 13:45:20
回答 1查看 5K关注 0票数 2

我试图转义一个字符串,以确保特殊字符被转义。

使用

代码语言:javascript
复制
StringEscapeUtils.escapeJava("")  escapes to \\uD83D\\uDE00

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

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

我可以理解,表情符号包含反斜杠,因此被转义,但为什么英镑符号要被转义,以及如何阻止它被逃脱?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-09 14:05:53

StringEscapeUtils.escapeJava()的文档对于"Java“到底是什么是模糊的。

我猜它指的是JLS第3章中的bit,它说:

程序是用Unicode编写的(§3.1),但是提供了词法翻译(§3.2),因此Unicode转义(§3.3)可以仅使用ASCII字符来包含任何Unicode字符。

ASCII (ANSI X3.4)是美国信息交换标准代码。Unicode UTF-16编码的前128个字符是ASCII字符.

因此,这可能意味着对字符串进行转义,以便只使用ASCII字符编写字符串。

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

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

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

因此,为了明确无误,英镑符号被逃脱了。

我怎样才能阻止它逃脱?

您不能使用这种方法;您需要找到一个替代方法。您唯一能做的就是再次用£替换字符串中的£

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41549457

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档