- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我今天在做一些工作,遇到了一个“看起来很有趣”的问题。我一直在将一些字符串数据解释为 utf-8,并检查编码形式。数据来自 ldap(特别是 Active Directory),通过 python-ldap。没有惊喜。
所以我几次遇到字节序列 '\xe3\x80\xb0',当解码为 utf-8 时,它是 unicode 代码点 3030 ( wavy dash )。我需要 utf-16 格式的字符串数据,所以我很自然地通过 .encode('utf-16') 将其转换。不幸的是,python 似乎不喜欢这个字符:
D:\> python
Python 2.6.4 (r264:75708, Oct 26 2009, 08:23:19) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> u"\u3030"
u'\u3030'
>>> u"\u3030".encode("utf-8")
'\xe3\x80\xb0'
>>> u"\u3030".encode("utf-16-le")
'00'
>>> u"\u3030".encode("utf-16-be")
'00'
>>> '\xe3\x80\xb0'.decode('utf-8')
u'\u3030'
>>> '\xe3\x80\xb0'.decode('utf-8').encode('utf-16')
'\xff\xfe00'
>>> '\xe3\x80\xb0'.decode('utf-8').encode('utf-16-le').decode('utf-8')
u'00'
似乎 IronPython 也不是粉丝:
D:\ipy
IronPython 2.6 Beta 2 (2.6.0.20) on .NET 2.0.50727.3053
Type "help", "copyright", "credits" or "license" for more information.
>>> u"\u3030"
u'\u3030'
>>> u"\u3030".encode('utf-8')
u'\xe3\x80\xb0'
>>> u"\u3030".encode('utf-16-le')
'00'
如果有人能告诉我这里到底发生了什么,将不胜感激。
最佳答案
这似乎是正确的行为。字符 u'\u3030' 以 UTF-16 编码时与 '00' 以 UTF-8 编码相同。看起来很奇怪,但它是正确的。
你看到的'\xff\xfe'只是一个Byte Order Mark .
您确定要波浪破折号而不是其他字符吗?如果您希望使用不同的字符,那可能是因为它在进入您的应用程序之前已经被错误编码。
关于Python UTF-16 WAVY DASH 编码问题/问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2269171/
我正在寻找一种方法,在网页上拍摄图像或图像的一部分,并渲染此或类似的动画效果,其中图像为“波浪形”。例子: “灵”区: 袍区 : 袍区 : 最好我想参数化地控制波的速度和调制。 对我来说,它看起来像是
我正在尝试使用 Paper.js 绘制一条波浪线。现在绘制了一条波浪线,但波浪非常不规则,尤其是在拐 Angular 处。 此外,我还依赖于 simplify() 和 smooth() 方法,这意味着
我今天在做一些工作,遇到了一个“看起来很有趣”的问题。我一直在将一些字符串数据解释为 utf-8,并检查编码形式。数据来自 ldap(特别是 Active Directory),通过 python-l
我是一名优秀的程序员,十分优秀!