首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Shift-JIS中编解码后的元字符转换为\

Shift-JIS中编解码后的元字符转换为\
EN

Stack Overflow用户
提问于 2016-10-13 22:37:53
回答 1查看 169关注 0票数 3

这怎麽可能?这是个bug吗?( Python 2.7.12和Python 3.5.1中的行为相同。)

代码语言:javascript
复制
In [1]: yen = u'\u00A5'

In [2]: print(yen)
¥

In [3]: yen_after_encoding_decoding = yen.encode('shift-jis').decode('shift-jis')

In [4]: print(yen_after_encoding_decoding)
\

In [5]: yen
Out[5]: '¥'

In [6]: yen_after_encoding_decoding
Out[6]: '\\'

In [7]:

表示yen的shift-jis编码与表示反斜杠的ASCII编码相同,因此这可能是相关的。但还是很奇怪!

EN

回答 1

Stack Overflow用户

发布于 2020-07-15 00:30:14

Shift_JIS的字符集是在日本工业标准中定义的。字符编码Shift_JIS使用JISX0201表示半角字符集,使用JISX0208表示全角字符集。

问题中的“反斜杠”是指ISO/IEC8859-1(拉丁文-1)中的半角反斜杠,表示为0x005C。另一方面,JISX0201(半角字符集)不包含反斜杠(参见https://en.wikipedia.org/wiki/JIS_X_0201)。它在0x005C中使用了日元符号而不是反斜杠。许多日语应用程序(例如日语区域设置中的Windows资源管理器)使用日语符号作为反斜杠的等价物,如C:¥Windows

在这种情况下,代码的行为如下所示:

  • yen在Unicode.
  • yen.encode('shift-jis')中是U+00A5,在bytes中是0x005C,因为¥包含在Shift- 0x005C中,并且在它的encoding.
  • .decode('shift-jis')中是0x005C0x005C转换为Unicode中的U+005C (半角反斜杠),因为¥等同于反斜杠。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40024053

复制
相关文章

相似问题

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