Python 2.7,将utf8字符串转换为ascii

2024-01-09

我正在使用 python 2.7.12 我有一个包含 unicode 文字的字符串,它不是 Unicode 类型。我想将其转换为文本。这个例子解释了我想要做什么。

>>> s
'\x00u\x00s\x00e\x00r\x00n\x00a\x00m\x00e\x00'
>>> print s
username
>>> type(s)
<type 'str'>
>>> s == "username"
False

我将如何转换这个字符串?


这不是 UTF-8,而是 UTF-16,尽管不清楚它是大端还是小端(没有 BOM,并且有一个前导和尾随 NUL 字节,使其长度不均匀)。对于 ASCII 范围内的文本,UTF-8 与 ASCII 无法区分,而 UTF-16 将 NUL 字节与 ASCII 编码字节交替(如您的示例中所示)。

无论如何,转换为纯 ASCII 相当容易,您只需要以一种或另一种方式处理不均匀的长度:

s = 'u\x00s\x00e\x00r\x00n\x00a\x00m\x00e\x00' # I removed \x00 from beginning manually
sascii = s.decode('utf-16-le').encode('ascii')

# Or without manually removing leading \x00
sascii = s.decode('utf-16-be', errors='ignore').encode('ascii')

当然,如果您的输入只是 NUL 散布的 ASCII,并且您无法弄清楚字节顺序或如何获得偶数个字节,那么您可以作弊:

sascii = s.replace('\x00', '')

但是,在输入是某种完全不同的编码的情况下,这不会引发异常,因此它可能会隐藏指定您期望捕获的错误。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python 2.7,将utf8字符串转换为ascii 的相关文章

随机推荐

  • “mean_squared_error”的负值

    我正在使用 scikit 并使用mean squared error作为 cross val score 中模型评估的评分函数 rms score cross validation cross val score model X y cv
  • 将多个列表 传递到 ArrayAdapter

    我从 活动 中开始 adapter new ItemAdapter Items this items totals setListAdapter adapter 现在这是 ItemAdapter public class ItemAdapt
  • 如何打开.sqlite-wal

    我想从 Mac 应用程序导出我的 Shazamed 标签 该应用程序不提供任何导出选项 Mac 版 Shazam 将它们存储在 sqlite 3 数据库中 该应用程序正在生成 3 个文件 ShazamDataModel sqlite Sha
  • 如何使用 MinGW 在 Windows 中构建 Google 的 protobuf?

    我使用 Code Blocks 作为 MingW 的 IDE 我正在尝试使用谷歌协议缓冲区 但我在构建 protobuf 时遇到了麻烦 protobuf 的自述文件说 如果您使用 Cygwin 或 MinGW 按照上面的 Unix 安装说明
  • 从 Netbeans 项目中删除文件,但不从硬盘中删除文件

    我的项目文件夹中有很多文件 但我不想将它们全部放在我的 Netbeans 项目中 Netbeans 还会使用更多内存和时间自动扫描它们 有没有办法从 Netbeans 项目中排除文件 文件夹 使用 Netbeans 7 3 的解决方案 在
  • 如何在 jquery 中创建查询字符串?

    我被困在这个问题上 我想在动态过滤器上创建查询字符串 现在我已经添加了过滤器类型Select your favorite sports and Select your favorite food 所以将来将会有更多的过滤器 并且只会出现在复
  • 创建 UNIX shell

    我想为 UNIX 创建一个迷你 shell 只是为了了解一切的来龙去脉 我对过去认为理所当然的事情有些困惑 这是一个有点哲学的问题 当我创建一个 shell 时 我假设我有一个没有 shell 的 UNIX 那么在这种情况下 std in
  • 串行或并行:Robo 测试实验室的设备测试顺序

    当我在 Robo 测试实验室上使用多个物理设备运行测试配置时 从 firebase 控制台或通过将应用程序上传到 Play 商店 这些设备是并行运行还是串行运行 如果设备并行运行 由于测试设备之间共享相同的设置参数 我的机器人设置脚本将无法
  • 在 Windows 与 Mac 上更改 ggplot2 中的字体

    我在 Mac 上使用 ggplot2 创建了一个绘图 我将字体更改为 Times New Roman 效果很好 library extrafont ggplot data df stat density aes x R1 colour rh
  • 将查找和替换对话框重置为 Visual Studio 中的当前文档

    有没有办法在 Visual Studio 中强制 查找 和 替换 对话框自动选择当前文件在 查找范围 下拉列表中 它应该仅在重新打开对话框时执行此操作 我经常忘记从整个解决方案或项目切换回来 最终浪费了大量时间等待 VS 搜索包括设计器文件
  • Kotlin 1.2.50 要求提供 baseFeatureInfoDir

    当我切换 Android 项目时 classpath com android tools build gradle 3 2 0 alpha18 to classpath org jetbrains kotlin kotlin gradle
  • 在 Java 中复制数据的更快方法?

    我接到一项从服务器复制数据的任务 我在用BufferedInputStream和输出流来复制数据 我正在逐字节地进行 尽管它正在运行 但复制数据需要很长时间 因为其中一些数据有 100 MB 所以它肯定不会工作 任何人都可以建议我使用逐字节
  • 在 xsd 中定义 xml,其中属性决定可能的内容

    如何在 xsd 中定义这样的东西
  • vim中ctrl-v粘贴时如何输入^M

    我的vim使用ctrl v是粘贴快捷方式 这与需要ctrl v作为快捷方式前缀的命令冲突 例如 M need ctrl v ctrl m 我可以在 vim 命令行中执行此操作 并且无需初始化即可在 vim 中执行此操作 但该符号不会从 vi
  • SQL JOIN 查找没有特定值的匹配记录的记录

    我正在尝试加快几年前为雇主的购买授权应用程序编写的一些代码的速度 基本上我有一个慢子查询 我想用 JOIN 替换它 如果它更快 当主管登录应用程序时 他会看到他尚未授权或拒绝的购买请求列表 该列表是通过以下查询生成的 SELECT FROM
  • numpy 唯一且不排序[重复]

    这个问题在这里已经有答案了 如何使用 numpy unique 而不对结果进行排序 而只是按照它们在序列中出现的顺序进行排序 像这样的东西吗 a 4 2 1 3 1 2 3 4 np unique a 4 2 1 3 而不是 np uniq
  • 使用 OpenCV 查找灰度图像中的局部最大值

    有谁知道如何找到灰度中的局部最大值IPL DEPTH 8U使用 OpenCV 进行图像处理 HarrisCorner 提到了类似的东西 但我实际上对角落不感兴趣 谢谢 如果像素等于 局部 邻域中的最大值 则该像素被视为局部最大值 下面的函数
  • 为什么 ANTLR4 不匹配单词“of”和标点符号“,”?

    我有一个Hello g4带有语法定义的语法文件 definition wordsWithPunctuation words WORD wordsWithPunctuation word word punctuation word word
  • Android M 奇怪的共享首选项问题

    在我运行 Android M 开发者预览版 2 的 Nexus 5 上 卸载 重新安装应用程序时 设备正在检索我很久以前存储的共享首选项 例如布尔值isFirstLaunch 清除这些的唯一方法是从设备设置中手动执行此操作 Android
  • Python 2.7,将utf8字符串转换为ascii

    我正在使用 python 2 7 12 我有一个包含 unicode 文字的字符串 它不是 Unicode 类型 我想将其转换为文本 这个例子解释了我想要做什么 gt gt gt s x00u x00s x00e x00r x00n x00