在 Python 3 中从 utf-16 转换为 utf-8

2023-12-06

我正在使用 Python 3 进行编程,但遇到了一个小问题,我在网上找不到任何关于它的参考。

据我了解,默认字符串是 utf-16,但我必须使用 utf-8,我找不到将从默认字符串转换为 utf-8 的命令。 我非常感谢你的帮助。


在 Python 3 中,当您进行字符串操作时,有两种不同的数据类型非常重要。首先是 string 类,它是一个表示 unicode 代码点的对象。重要的是,这个字符串不是一些字节,而是一个字符序列。其次,有 bytes 类,它只是一个字节序列,通常表示以编码(如 utf-8 或 iso-8859-15)存储的字符串。

这对你来说意味着什么?据我了解,您想要读取和写入 utf-8 文件。让我们编写一个程序,将所有“ć”替换为“ç”字符

def main():
    # Let's first open an output file. See how we give an encoding to let python know, that when we print something to the file, it should be encoded as utf-8
    with open('output_file', 'w', encoding='utf-8') as out_file:
        # read every line. We give open() the encoding so it will return a Unicode string. 
        for line in open('input_file', encoding='utf-8'):
            #Replace the characters we want. When you define a string in python it also is automatically a unicode string. No worries about encoding there. Because we opened the file with the utf-8 encoding, the print statement will encode the whole string to utf-8.
            print(line.replace('ć', 'ç'), out_file)

那么什么时候应该使用字节呢?不经常。我能想到的一个例子是当你从套接字读取某些内容时。如果你在 bytes 对象中有这个,你可以通过执行 bytes.decode('encoding') 使其成为 unicode 字符串,反之亦然,使用 str.encode('encoding') 。但正如所说,您可能不需要它。

尽管如此,因为它很有趣,这里采用困难的方法,您自己对所有内容进行编码:

def main():
    # Open the file in binary mode. So we are going to write bytes to it instead of strings
    with open('output_file', 'wb') as out_file:
        # read every line. Again, we open it binary, so we get bytes 
        for line_bytes in open('input_file', 'rb'):
            #Convert the bytes to a string
            line_string = bytes.decode('utf-8')
            #Replace the characters we want. 
            line_string = line_string.replace('ć', 'ç')
            #Make a bytes to print
            out_bytes = line_string.encode('utf-8')
            #Print the bytes
            print(out_bytes, out_file)

关于这个主题(字符串编码)的好读物是http://www.joelonsoftware.com/articles/Unicode.html。真心推荐阅读!

Source: http://docs.python.org/release/3.0.1/whatsnew/3.0.html#text-vs-data-instead-of-unicode-vs-8-bit

(P.S.正如你所看到的,我在这篇文章中没有提到utf-16。我实际上不知道python是否使用它作为内部解码,但这完全无关。目前你正在使用一个字符串,您使用的是字符(代码点),而不是字节。

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

在 Python 3 中从 utf-16 转换为 utf-8 的相关文章

  • 只使用 Django 的某些部分?

    我喜欢 Django 但对于一个特定的应用程序 我只想使用它的一部分 但我对 Django 的内部工作原理还不够熟悉 所以也许有人可以指出我必须做什么的正确方向查看 具体来说 我想使用 模型和数据库抽象 The 缓存API http doc
  • Pandas 字符串提取所有匹配项

    我正在学习 pandas 系列字符串方法中的正则表达式操作 我能够从字符串中提取第一个数字 但我的正则表达式与第二个数字不匹配 如何捕获这两个数字 注意第二行 第二个元素在这里是 NAN CODE import pandas as pd d
  • 重新索引错误没有意义

    I have DataFrames大小在 100k 到 2m 之间 我正在处理这个问题的框架是如此之大 但请注意 我必须对其他框架执行相同的操作 gt gt gt len data 357451 现在这个文件是通过编译许多文件创建的 所以它
  • 如何移动我的图像? python 3.10.4 pygame

    我会移动我的图像 图像是matiskinfinal png 我尝试将像素添加到 x 或其他我不知道它是什么的东西 因为我真的是 python 的初学者 pygame但是是 x x 变化 但图像没有移动 import os import py
  • 在 Python 中绘制分类数据的三个维度

    我的数据包含三个我试图可视化的分类变量 城市 五个之一 职业 四种之一 血型 四种之一 到目前为止 我已经成功地以一种我认为易于使用的方式对数据进行了分组 import numpy as np pandas as pd Make data
  • Django 未在 404 页面上应用应用程序中的 CSS 文件

    姜戈3 0 8 Python 3 7 x 我有一个包含一些应用程序的 Django 项目 我正在尝试为 400 403 404 500 错误制作一些 默认 错误页面 我已经这样做了 并显示了适当的模板 但没有任何样式或 JS 在 404 错
  • turtle.Screen().screensize() 未输出正确的屏幕尺寸[重复]

    这个问题在这里已经有答案了 我编写了一些代码来在屏幕周围随机放置点 但是 它并没有覆盖整个屏幕 import turtle import random t turtle Turtle color red green blue pink ye
  • PyTorch:加速数据加载

    我正在使用 dendnet121 从 Kaggle 数据集进行猫 狗检测 我启用了cuda 看起来训练速度非常快 然而 数据加载 或者可能是处理 似乎非常慢 有一些方法可以加快速度吗 我尝试玩女巫批量大小 但没有提供太多帮助 我还将 num
  • CSV 从 UTF8 到 ISO-8859-1

    我正在尝试修改我的 CSV 导出 但它不会将我的 CSV 从 UTF 8 转换 保存为 ISO 8859 1 请问我做错了什么吗 实际上自从修改了这个之后 我得到了一个空的 CSV 文件 php 7 0 x function my Gene
  • PyCharm 无法识别字典值类型

    我有一个简单的代码片段 其中我将字典值设置为空列表 new dict for i in range 1 13 new dict i 现在 如果在下一行的循环内我会输入new dict i 并添加一个点 我希望 PyCharm 向我显示可用于
  • 使 np.loadtxt 使用多个可能的分隔符

    我有一个程序可以读取数据文件 用户可以选择他们想要使用的列 我希望它对于输入文件更加通用 有时 列可能如下所示 10 34 24 58 8 284 6 121 有时它们可 能看起来像这样 10 34 24 58 8 284 6 121 我希
  • 如何在数据框中绘制包含三列的无向图,形成 3 种不同类型的节点(三方)?

    我正在尝试使用三个不同的列表绘制网络的可视化 这三个列表形成 3 种类型的节点 下面的代码正在运行 如图所示 需要两个列表 用户 ID 评分 但是 我希望我的图表是三部分的 即 user userId review ratings prod
  • 使用 Python 脚本打开特定文件类型?

    如何使 Python 脚本成为特定文件类型 例如 foo 的默认应用程序 例如 当我双击 Finder Explorer 中的文件时 我希望该文件在 Python 脚本中打开 这可以在 Win 和 或 OS X 中实现吗 如果重要的话 该应
  • 在python中安装scipy模块时出错

    我正在尝试使用 pip 在 python 中安装 scipy 模块 它显示以下错误 Command c users sony appdata local programs python python35 32 python exe u c
  • Scrapy的redirect_urls异常.KeyError

    我是 Scrapy 和 Python 的新手 最近推出了我的第一个蜘蛛 有一个功能似乎以前有效 但现在它只适用于我试图废弃的一些网站 代码行是 item url direct response request meta redirect u
  • Python 中的十进制到二进制半精度 IEEE 754

    我只能使用以下命令将十进制转换为二进制单精度 IEEE754struct pack模块 或者使用相反的方法 float16 或 float32 numpy frombuffer 是否可以使用 Numpy 将十进制转换为二进制半精度浮点数 我
  • 如何将 fields 参数传递到 Google Drive Python API 调用中

    I have results drive service files list body execute where body q query string maxResults 1 为了提高性能 我想限制返回的字段 如下所述 https
  • 部署 Flask 应用程序时如何检测额外文件的更改并重新加载应用程序? [关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 我在 Flask 中构建了一个小型 Web 应用程序 并尝试将其部署在 Pythonanywhere 上 在开发过程中
  • 通过 ManyToManyField = Value 对 django 查询集进行排序

    如果有一些模型 例如 class Tag models Model name models CharField class Thing models Model title models CharField tags models Many
  • Facebook Messenger 机器人的日期选择器 webview - 无法将字段值带回机器人的输入字段

    我正在使用 Dialogflow 和 Messenger 开发聊天机器人 Webhook 是用 Python 3 x 编写的 我面临着如何再次将数据从 webview 传输到信使聊天窗口以继续与用户对话的问题 Messenger 聊天机器人

随机推荐

  • Google Glass 将视频流传输到服务器

    我正在尝试为 Google Glass 构建一个应用程序 它可以流式传输到服务器并让客户端通过网络浏览器查看流 到目前为止 我似乎需要通过 RTSP 到媒体服务器 例如 Wowza 执行此操作 然后拥有一个托管一些视频播放器的 Web 服务
  • 包含 url 值的 PHP 数组到包含组合值的新数组

    我已经尝试了很长时间 但找不到一种将数组合并到新数组的方法 大多数时候我迷失在循环和匹配中 我想收到一个可以执行以下操作的 php 5 方法 实施例1 假设有一个包含如下 url 的数组 Array a a b c a b c d e a
  • JSP - 如何在 session.setAttribute 中传递 javascript var? [复制]

    这个问题在这里已经有答案了 刚开始学习 JSP 并尝试在两个页面之间传递数据 我想知道是否可以将 javascript 变量传递给session setAttribute 目前 我可以通过 2 个 jsp 文件传递 一串文本 如下所示 JS
  • 如何修复 src 文件系统问题上的资源更改

    我正在尝试使用Hive关于 MR 执行SQL它中途失败并出现以下错误 Application application 1570514228864 0001 failed 2 times due to AM Container for app
  • 关于 PYTHONPATH 的 Python 2.x 多版本问题

    系统中安装了Python 2 6 现在我想使用Python 2 7中引入的模块 因为我没有root权限 所以我在我的主目录 HOME local 下构建并安装了2 7 我将以下内容添加到我的 HOME bashrc 中 export PAT
  • 用2个方阵模拟matlab的mrdivide

    我有 2 个 19x19 方阵 a 和 b 我尝试使用斜杠 mrdivide 运算符来执行除法 这样 c a b 我正在尝试在 OpenCV 中实现这一点 我发现一些人建议使用cv solve但到目前为止 我还没有找到任何可以给我提供接近
  • C++:提取 boost::variant 元素的大小

    我有一个向量 其中包含带有 boost variant 元素的结构 现在我必须序列化这个向量 由于规范的原因 我必须计算保存该向量所需的八位字节 现在我正在寻找一种方法来以简单的方式实现这一点 int allSize 0 for auto
  • 为什么 Laravel 的 Composer 创建项目执行失败?

    看来除非我使用sudo我的 Composer 命令无法创建 Laravel 项目 Without sudo它给了我以下错误 ErrorException copy Users H composer cache files laravel l
  • Python随机样本生成器(适应庞大的人口规模)

    你可能知道random sample population sample size 快速返回一个随机样本 但是如果你事先不知道样本的大小怎么办 你最终会对整个总体进行抽样 或者对其进行洗牌 这是相同的 但这可能是浪费的 如果大多数样本量与总
  • iPhone 6 不同的故事板?

    当我们拥有iPhone 4 and 5 我们检查了屏幕尺寸 并为每部 iPhone 制作了 2 个故事板 iPhone 4 if height 480 storyboard UIStoryboard storyboardWithName S
  • 显示屏幕顶部而不是位于 inputAccessoryView 上的标签

    这是我的代码 var messageView UITextView var textView UITextView textView text Add your message here textView textColor UIColor
  • 将表从 R 传输到 SQL

    我知道通常要从头开始创建一个SQL表 您需要首先创建一个空表 然后将数据插入到该表中 例如 create table CREATE TABLE Customers CustomerName int ContactName varchar 2
  • 在 jQuery Mobile 1.1 中进行繁重处理之前显示加载微调器?

    我要疯狂地尝试让旋转器出现 我已将繁重的处理功能绑定到一个按钮 document delegate clearread tap onClearRead 所以点击它会调用这个 var onClearRead function setTimeo
  • “System.IO.Stream”不包含 Windows 应用商店应用中“关闭”的定义

    当尝试在 Windows 应用商店应用程序上构建我的 Unity 3D 项目时 出现此错误 System IO Stream 不包含 Close 的定义 并且找不到接受 System IO Stream 类型的第一个参数的扩展方法 Clos
  • 用于突出显示功能的更高效的 JavaScript 代码?

    所以这是我需要清理的功能 我需要创建一个功能 观众可以单击句子中的任何单词 它就会突出显示 然而 我需要做到一次只突出显示一个单词 例如 如果您单击单词 you 然后您改变主意并单击单词 eagle 则单词 you 将被取消选择 它已经有现
  • UseStatusCodePagesWithReExecute 不适用于禁止 (403)

    当我指定 404 作为 http 结果代码时 UseStatusCodePagesWithReExecute正在按预期工作 当我指定 403 作为 http 结果代码时 UseStatusCodePagesWithReExecute没有按预
  • 运行 Java 程序

    我查看了其他一些 SO 问题 没有找到任何可以解决我的问题的内容 我有一个 Main java 文件 如下 和一个 OthelloLib jar 文件 没有关联的源文件 Running javac Main java失败了 Main jav
  • 如何在 ASP.Net Core 6.0 中实现 HSTS 标头?

    我需要在 ASP Net Core 6 0 WEB API 应用程序中实现 HSTS 标头安全性 下面是我的程序 cs var builder WebApplication CreateBuilder args Https redirect
  • Twilio 录制:暂停和恢复

    我相信答案是否定的 但 Twilio 是否提供暂停 恢复录音的功能 用例是对通话进行录音 但在收集敏感信息时暂停录音 从 REST 文档来看 它似乎不是受支持的功能 我认为有人可能已经找到了满足此要求的一些选项 这是可能的 尽管从文档中并不
  • 在 Python 3 中从 utf-16 转换为 utf-8

    我正在使用 Python 3 进行编程 但遇到了一个小问题 我在网上找不到任何关于它的参考 据我了解 默认字符串是 utf 16 但我必须使用 utf 8 我找不到将从默认字符串转换为 utf 8 的命令 我非常感谢你的帮助 在 Pytho