'gbk' codec can't encode character解决方法

2023-05-16

Friom: https://www.cnblogs.com/themost/p/6603409.html

使用Python写文件的时候,或者将网络数据流写入到本地文件的时候,大部分情况下会遇到:UnicodeEncodeError: 'gbk' codec can't encode character '\xa0' in position ... 这个问题。 网络上有很多类似的文件讲述如何解决这个问题,但是无非就是encode,decode相关的,这是导致该问题出现的真正原因吗?不是的。 很多时候,我们使用了decode和encode,试遍了各种编码,utf8,utf-8,gbk,gb2312等等,该有的编码都试遍了,可是编译的时候仍然出现: UnicodeEncodeError: 'gbk' codec can't encode character '\xa0' in position XXX。 崩溃了。

    在windows下面编写python脚本,编码问题很严重。

    将网络数据流写入文件时时,我们会遇到几个编码:

    1: #encoding='XXX' 这里(也就是python文件第一行的内容)的编码是指该python脚本文件本身的编码,无关紧要。只要XXX和文件本身的编码相同就行了。 比如notepad++ "格式"菜单里面里可以设置各种编码,这时需要保证该菜单里设置的编码和encoding XXX相同就行了,不同的话会报错

    2:网络数据流的编码 比如获取网页,那么网络数据流的编码就是网页的编码。需要使用decode解码成unicode编码。

    3:目标文件的编码 要将网络数据流的编码写入到新文件,那么我么需要指定新文件的编码。写文件代码如:

复制代码代码如下:

f.write(txt)  

,那么txt是一个字符串,它是通过decode解码过的字符串。关键点就要来了:目标文件的编码是导致标题所指问题的罪魁祸首。如果我们打开一个文件:

复制代码代码如下:

f = open("out.html","w")  

,在windows下面,新文件的默认编码是gbk,这样的话,python解释器会用gbk编码去解析我们的网络数据流txt,然而txt此时已经是decode过的unicode编码,这样的话就会导致解析不了,出现上述问题。 解决的办法就是,改变目标文件的编码:

复制代码代码如下:

f = open("out.html","w",encoding='utf-8')  

这样,问题将不复存在。

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

'gbk' codec can't encode character解决方法 的相关文章

  • Java Servlet getParameter 获取 URL 参数

    我正在构建一个网站 该网站将 url 提交给 servlet 以进行分析 在客户端 我将 url 作为编码参数提交 例如 Submit http www site com Goes to http localhost myservlet u
  • ffmpeg concat demuxer 在加入视频时冻结我的视频帧

    我正在尝试使用此命令连接 6 个具有相同分辨率和相同编解码器的 WebM 视频文件ffmpeg f concat i mylist txt c copy finalvideo webm但生成的视频冻结了某些部分 正是每个部分连接的地方 是的
  • PHP urlencode - 仅对文件名进行编码,不要触及斜杠

    http www example com some folder some file that needs to be encoded zip urlencode myurl 问题是urlencode还会对斜杠进行编码 从而导致 URL 无
  • 将字符串编码为字符代码

    我想将电子邮件地址编码为其相应的字符代码 因此在打印时 浏览器会解释字符代码 但机器人会获取编码的字符串而不是解释的字符串 例如 1 email protected cdn cgi l email protection 应按 2 发送到浏览
  • 再次:UnicodeEncodeError:ascii 编解码器无法编码

    我有一个我想要解析的 XML 文件的文件夹 我需要从这些文件的元素中获取文本 它们将被收集并打印到 CSV 文件中 其中的元素按列列出 I can实际上现在就这样做some我的文件 也就是说 对于我的许多 XML 文件 该过程进展顺利 并且
  • 如何使用 python 从文本文件的行中读取特定字符?

    我有多个 txt 文件 其中包含与此类似的多行 class1 1 28 9 315 13 354227 2 36 247 17 342 8 34 14 3825 class2 14 31 8679 7 32 3582 2 32 4127 1
  • 如何使用 char 作为 switch-case 中的 case?

    如何在 switch case 中使用字符 我将收到用户输入的任何第一个字母 import javax swing public class SwitchCase public static void main String args St
  • 如何检查可以找到多少列字符[重复]

    这个问题在这里已经有答案了 我有一个包含 4 列的数据集 其中包含名称 其中名称的数量和名称的顺序在列之间有所不同 某些列还可以包含相同的名称两次或更多次 看起来如下 df lt data frame x1 c Ben Alex Tim L
  • PHP中如何分割汉字?

    我需要一些关于如何在 PHP 中拆分与英文单词和数字混合的汉字的帮助 例如 如果我读到 FrontPage 2000中文版應用大全 我希望得到 FrontPage 2000 中 文 版 應 用 大 全 or FrontPage 2 0 0
  • 如何为特定类编写hashCode方法?

    我正在尝试为我的简单类生成 hashCode 方法 但我没有得到任何结果 我将不胜感激任何帮助 我已经实现了 equals 方法 如下所示 并且还想知道是否需要实现compareTo 方法 我已经导入 java lang Character
  • r-将列表列转换为字符向量,其中列表是字符

    我正在尝试将列表转换为单个字符值 或者基本上从这里开始 test lt data frame a c 1 1 1 2 2 2 b c a b c d e f gt group by a gt summarise b list b to th
  • 将扰乱的 PDF 字符重新映射为可读文本

    我确实遇到了一个问题 因为 cups PDF 创建的 PDF 文档中的字符被映射到奇怪的符号 在 Ubuntu Linux 14 04 和 16 04 上 我认为它是某种 unicode 即使 Python 告诉我它的字符串类型 type
  • 如何选择全帧(未压缩)作为 VideoWriter 的编解码器

    我想将设备中的未压缩帧存储为视频 但我需要知道如何选择 全帧 未压缩 作为 VideoWriter 在 emgu 中又名 openCV 的编解码器 当我像这样传递 1 时 我可以从下拉菜单中选择它 VideoWriter myVideoWr
  • iOS NSBlock的NSMethodSignature(或编码)

    我需要一种方法来在运行时检查给定块的参数数量和参数类型 我当前正在编写的某些对象映射库需要这个 我将字符串格式的值映射到选择器 希望块也如此 我尝试了下面示例中的代码 但由于某种原因它对我不起作用并且返回 nil 字符串描述 你知道一种在运
  • ffmpeg流rc缓冲区下溢

    目前我正在使用开源工具 ffmpeg ffserver 建立一个屏幕共享平台 分享之初一切都很好 大约 1 1 2 分钟后 我在输出中得到以下异常 flv 0x3a47aa0 rc buffer underflow flv 0x3a47aa
  • CSS“ch”单元的意外行为

    我正在使用ch用于指定宽度的 CSS 单位div包含文本 我使用的是等宽字体 但是 如果我设置width 80ch 我第一个得到 80 个字符n行 其中n始终是 24 不确定这是否重要 但从那时起只有 79 个字符 这如下面的屏幕截图所示
  • openh264 - bEnableFrameSkip=0,比特率无法控制

    关于 opencv H 264 有很多问题 但是 他们都没有给出详细的解释 我在 Visual Studio 中使用 openh264 openh264 1 4 0 win32msvc dll 以及 opencv 3 1 使用启用 ffmp
  • Unicode 对象必须在哈希错误之前进行编码

    处理类似问题的问题 SO 1 https stackoverflow com questions 7585307 typeerror unicode objects must be encoded before hashing SO 2 h
  • 将对象转换为可编码对象失败

    我收到以下错误 Converting object to an encodable object failed Instance of Patient 0 JsonStringifier writeObject dart convert j
  • 获取表情符号字符的描述

    每个表情符号都有一个描述 您可以在 Mac 操作系统中看到 Space特殊字符选择器 有这里有他们的名单 http www grumdrig com emoji list 有没有办法让我在代码中查询此描述 无需将它们全部输入到结构中 我想做

随机推荐