当前位置: 首页 > 面试题库 >

Java中的Unicode转义语法

鲜于光辉
2023-03-14
问题内容

在Java中,我了解到以下语法可用于提及键盘上没有的Unicode字符(例如,非ASCII字符):

(\u)(u)*(HexDigit)(HexDigit)(HexDigit)(HexDigit)

我的问题是:以上语法中(u)*的目的是什么?

我理解的一个用Java表示日元符号的用例是:

char ch = '\u00A5';

问题答案:

有趣的问题。JSL的3.3节说:

UnicodeEscape:
    \ UnicodeMarker HexDigit HexDigit HexDigit HexDigit

UnicodeMarker:
    u
    UnicodeMarker u

转化为 \\u+\p{XDigit}{4}

如果合格的\后跟u,或不止一个u,并且最后一个u后不跟四个十六进制数字,则发生编译时错误。

因此,您是对的,u反斜杠后可以有一个或多个。原因进一步说明:

Java编程语言指定了一种将Unicode编写的程序转换为ASCII的标准方法,该程序将程序更改为可以由基于ASCII的工具处理的形式。转换涉及通过添加额外的u将程序源文本中的所有Unicode转义转换为ASCII-
例如,\ uxxxx变为\ uuxxxx-同时将源文本中的非ASCII字符转换为每个均包含单个u的Unicode转义。 。

Java编译器同样可以接受此转换后的版本,并且表示完全相同的程序。稍后可以通过将存在多个u的每个转义序列转换为具有更少u的Unicode字符序列,同时将具有单个u的每个转义序列转换为相应的单个Unicode字符,从此ASCII格式还原确切的Unicode源。

所以这个输入

 \u0020ä

变成

 \uu0020\u00e4

第一个uu意思是“这是一个以unicode开头的转义序列”,第二个意思u是“一个自动工具将非ASCII字符转换为unicode义。”

当您希望从ASCII转换回unicode时,此信息很有用:您可以还原尽可能多的原始代码



 类似资料:
  • 问题内容: 在解析包含unicode转义序列的json字符串时,存在一个长期存在的错误。似乎需要修复该错误,这种错误可能很快就不会发生,因此我正在寻找一种在R中创建解决方法的方法,该方法在将序列提供给json解析器之前先取消序列化。 一些上下文:json数据始终是unicode,默认情况下使用,因此通常不需要转义。但是出于历史原因,json确实支持转义的unicode。因此json数据 和 是等效

  • 注意,unicode是转义字符串 我的徒劳尝试到目前为止...

  • 在JSON中,Unicode字符可以使用表示法进行转义。我假设显然是指十六进制的Unicode代码点。 但由于只有4位数字,这是否意味着无法转义

  • 问题内容: 嗨,假设我有字符串 请注意转义的反斜杠。 如何将其转换为相应的unicode字符串? 问题答案: print ‘test \u0259’.decode(‘unicode-escape’) test ə

  • 问题内容: 我有一个Unicode转义的字符串: 我想将此字符串转换为unicode非转义版本 我该怎么做呢? 问题答案: 对其进行编码(使用任何编解码器,utf-8可能都可以),然后使用对其进行解码:

  • 我有一个统一码转义字符串: 我想将此字符串转换为unicode未转义的版本 我该怎么做?