修复损坏的编码(使用 Python)

2024-03-27

我有一堆文本文件包含编码错误的韩语字符。具体来说,字符似乎是用 EUC-KR 编码的,但文件本身是用 UTF8+BOM 保存的。

到目前为止,我成功修复了一个文件,内容如下:

  1. 使用 EditPlus 打开文件(它显示文件的编码是UTF8+BOM)
  2. 在 EditPlus 中,将文件另存为ANSI
  3. 最后,在Python中:

    with codecs.open(html, 'rb', encoding='euc-kr') as source_file:
        contents = source_file.read()
    
    with open(html, 'w+b') as dest_file:
        dest_file.write(contents.encode('utf-8'))
    

我想自动化这一点,但我一直没能做到。我可以用Python打开原始文件:

codecs.open(html, 'rb', encoding='utf-8-sig')

但是,我一直无法弄清楚如何做2. part.


我假设你有文字already编码为EUC-KR,然后编码again为 UTF-8。如果是这样,编码为 Latin 1(Windows 称之为 ANSI)确实是恢复原始 EUC-KR 字节串的最佳方法。

打开带有 BOM 的 UTF8 文件,编码为 Latin1,解码为 EUC-KR:

import io

with io.open(html, encoding='utf-8-sig') as infh:
    data = infh.read().encode('latin1').decode('euc-kr')

with io.open(html, 'w', encoding='utf8') as outfh:
    outfh.write(data)

我正在使用io.open()功能 http://docs.python.org/2/library/io.html#io.open在这里而不是codecs作为更稳健的方法;io是新的 Python 3 库,也向后移植到 Python 2。

Demo:

>>> broken = '\xef\xbb\xbf\xc2\xb9\xc3\x8c\xc2\xbc\xc3\xba'
>>> print broken.decode('utf-8-sig').encode('latin1').decode('euc-kr')
미술
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

修复损坏的编码(使用 Python) 的相关文章

  • 在 Python 中对数据进行求和

    Given that the fitting function is of type 我打算将这样的函数拟合到我拥有的实验数据 x y f x 中 但后来我有一些疑问 当涉及求和时 如何定义拟合函数 一旦定义了函数 即def func re
  • 如何使用curl将文件上传到Atlassian Confluence页面

    我正在尝试按照远程 API 文档中给出的指南将 xls 文件上传到 Confluence wiki 页面 https developer atlassian com confdev confluence server rest api co
  • ipdb 和 pdb++ 之间的区别?

    Python 有一个名为 pdb 的默认调试器 但社区创建了一些替代品 其中两个是ipdb https github com gotcha ipdb and pdb https github com pdbpp pdbpp 它们似乎迎合了相
  • 美丽的汤从谷歌搜索中提取href

    谷歌搜索给出了以下 HTML 的第一个结果 h3 class r a href https rads stackoverflow com amzn click com 0470284889 class l vst em Quantitati
  • 带括号的上下文管理器

    我试图了解新的新内容带括号的上下文管理器Python 3 10 中的功能 新功能中的顶部项目here https docs python org 3 10 whatsnew 3 10 html 我的测试示例是尝试编写 with open f
  • Python 小数.InvalidOperation 错误

    当我运行这样的东西时 我总是收到此错误 from decimal import getcontext prec 30 b 2 3 Decimal b Error Traceback most recent call last File Te
  • 我怎样才能在python cgi中找到上传的文件名

    我制作了如下简单的网络服务器 import BaseHTTPServer os cgi import cgitb cgitb enable html
  • 使用opencv计算深度视差图

    我无法使用 opencv 从视差图计算深度 我知道两个立体图像中的距离是用以下公式计算的z baseline focal disparity p 但我不知道如何使用地图计算视差 我使用的代码如下 为我提供了两个图像的视差图 import n
  • 使用字母而不是数字进行顺序计数[重复]

    这个问题在这里已经有答案了 我需要一种方法 将字符串 递增 到 z 然后将 aa 递增到 az 然后将 ba 递增到 bz 依此类推 就像 Excel 工作表中的列一样 我将向该方法提供前一个字符串 它应该增加到下一个字母 PSEUDO C
  • 可移植的非关系数据库

    我想尝试 尝试非关系数据库 最好的解决方案是 便携式 这意味着它不需要安装 理想情况下 只需将目录复制粘贴到某个地方即可使其工作 我不介意第一次使用时是否需要编辑一些配置文件或运行配置工具 可从 python 访问 适用于 Windows
  • 对图像使用 Pixellib 自定义训练时出现 input_image 元形状错误

    我正在使用 Pixellib 来训练自定义图像实例分割 我创建了一个数据集 可以在下面的链接中看到 数据集 https drive google com drive folders 1MjpDNZtzGRNxEtCDcTmrjUuB1ics
  • 理解@property装饰器和继承[重复]

    这个问题在这里已经有答案了 这里是 Python 3 以防万一它很重要 我试图正确理解如何实现继承 property使用 我已经搜索了 StackOverflow 并阅读了大约 20 个类似的问题 但无济于事 因为他们试图解决的问题略有不同
  • 当 DetailView 遇到时更新模型字段。 [姜戈]

    我有一个类似的 DetailViewviews py views py class CustomView DetailView context object name content model models AppModel templa
  • 提交表格并上传带有请求的文件

    我正在努力提交特定的表格蟒蛇请求 http www python requests org 我想使用它的网站上的其他表单工作正常 我可以提交登录表单等 这只是我遇到问题的文件上传 显然 提交表单效果很好 因为我从网站收到一条消息 说 请返回
  • 管理文件字段当前 url 不正确

    在 Django 管理中 只要有 FileField 编辑页面上就会有一个 当前 框 其中包含指向当前文件的超链接 但是 此链接会附加到当前页面 url 因此会导致 404 因为不存在这样的页面 例如 http 127 0 0 1 8000
  • 如何在 Python 中仅列出 zip 存档中的文件夹?

    如何仅列出 zip 存档中的文件夹 这将列出存档中的每个文件夹和文件 import zipfile file zipfile ZipFile samples sample zip r for name in file namelist pr
  • 请求response.iter_content()获取不完整的文件(1024MB而不是1.5GB)?

    您好 我一直在使用此代码片段从网站下载文件 到目前为止 小于 1GB 的文件都很好 但我注意到 1 5GB 文件不完整 s is requests session object r s get fileUrl headers headers
  • Jupyter Notebook 中的多处理与线程

    我试图测试这个例子here https ipywidgets readthedocs io en stable examples Widget 20Asynchronous html将其从线程更改为多处理 在 jupyter Noteboo
  • 测试中的模型 - Django 1.7 问题

    我正在尝试将我的项目移植为使用 Django 1 7 除了一件事之外 一切都很好 测试文件夹内的模型 Django 1 7 新迁移在内部运行 migrate 命令 在运行syncdb之前 这意味着如果模型未包含在迁移中 它将不会填充到数据库
  • 在Python中从列表中获取n个项目组的惯用方法? [复制]

    这个问题在这里已经有答案了 给定一个列表 A 1 2 3 4 5 6 是否有任何惯用的 Pythonic 方式来迭代它 就好像它是 B 1 2 3 4 5 6 除了索引之外 这感觉像是 C 的遗留物 for a1 a2 in A i A i

随机推荐

  • Python 类成员

    我刚刚学习 Python 并且有 C 背景 所以如果我对两者有任何困惑 混淆 请告诉我 假设我有以下课程 class Node object def init self element self element element self l
  • MVC 中间件检查控制器方法的属性

    我正在使用 asp net core mvc 在默认身份验证旁边 我添加了非常具体的授权 这是通过使用完成的ResultFilterAttribute属性 将来 为了确保开发人员为每个控制器方法指定权限 我想在执行操作之前检查是否为方法设置
  • 查询中的mysql语法错误[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我收到错误查询失败 您的 SQL 语法有错误 检查与您的 MySQL 服务器版本相对应的手册 了解在第 5 行 5 7 6 9 1
  • Nuxtjs:如何使用 HttpOnly Cookie 进行 Nuxt-Auth 策略

    我之前使用过 Vuejs 并决定研究一下 NuxtJs 在我以前的应用程序中 我的服务器发送了一个我的客户端无法读取的 HttpOnly cookie 因此 对于身份验证 我尝试了 NuxtAuth 它有一些策略 我注意到不可能使用 Htt
  • Android WebView 中的编程点击

    我有一个网站href其中将我重定向到 https a href class login link link private cab link i class icon user i a 所以 我可以通过 JavaScript 点击它 它在
  • maxima:使用函数作为函数参数

    就像标题所说 我想使用函数作为函数参数 直觉上我尝试了类似的东西 a t c t c b R 11 R 12 R 13 d 1x d 1y d 1z R 11 d 1x R 12 d 1y R 13 d 1z f a t c b R 11
  • 如何使用特定的“hd”(托管域)参数配置 Firebase + Google OAuth?

    我正在将 Firebase 与 Google 身份验证提供商一起使用 在其他应用程序中使用 Google OAuth 时 我可以将身份验证配置为仅限于特定域 Google OpenID Connect 文档详细介绍了用于此功能的 hd 参数
  • 如何生成一个“私有 URL”,在安全性和便利性之间实现最先进的平衡?

    我在哪里可以找到有关 私有 URL 的写得很好 深入的技术讨论 例如 Google 文档中使用的 知道链接的任何人 我正在寻找诸如生成链接的算法和实现 它使用的 ID 空间的大小 安全影响的分析以及为了方便而在安全性方面做出的务实妥协等主题
  • 单击链接/按钮时更改 div 的内容

    基本上我有一个网页 有一个 div id content 和一个 div id sidebar 我想做的是在侧边栏中单击链接 按钮时更改内容 div 中的内容 而不需要为每篇文章提供单独的页面 原因是 我正在为一些多个乐队做一个 BIO 页
  • Xamarin.UITests - 在真实设备上测试 - iOS - 应用程序权限弹出问题

    我的 iOS 应用程序需要一些权限 GPS 推送通知 当应用程序第一次启动时 iOS 会询问用户是否同意向应用程序授予这些权限 我已经编写了一些 UITest 并希望在本地连接的 iPhone 上自动运行它们 问题是我无法覆盖权限问题并且我
  • python int() 函数

    如果是小数 下面的代码会显示错误 例如49 9 被发送到next多变的 你能告诉我为什么吗 为什么int 将其转换为整数 next raw input gt how much int next if how much lt 50 print
  • 复制可见单元格以将 listobject 过滤后的数据提取到新工作簿

    我正在尝试将 listobject 过滤数据提取到新工作簿中 但是 会提取所有数据 而不仅仅是过滤后的数据 Set loop obj wsCopy ListObjects 1 loop obj AutoFilter ShowAllData
  • 熊猫从长到宽

    使用 pandas 我想将长数据帧转换为宽数据帧 但通常pivot方法没有我需要的那么灵活 这是长数据 raw sample 1 1 1 1 2 2 3 3 3 3 gene G1 G2 G3 G3 G1 G2 G2 G2 G3 G3 ty
  • 是否有必要在递归调用的计时器内清除Timeout?

    是否需要打电话clearTimeout 在 Coffeescript 中的递归调用函数中 我关心的是是否不打电话clearTimeout 如果此函数每秒运行很多次 随着时间的推移 可能会导致某种内存泄漏 我的想法是 JS 垃圾收集器处理这个
  • 当JVM执行Java应用程序时,操作系统的作用是什么?为什么我们需要操作系统?

    我在网上读过一些资料 有人说Java应用程序是由java虚拟机 JVM 执行的 执行 这个词让我有点困惑 据我所知 非Java应用程序 即 用C C 编写 可以由操作系统执行 在较低级别 这意味着操作系统将二进制程序加载到内存中 然后指示C
  • Ant 相当于 cut |排序|独特的

    在 Ant 任务中 我设置了一个文件列表属性 例如 web src main test com whatever Ralph business src main test com whatever Alice web src main te
  • 用于可视化类似流程图的 Java 图形库

    我正在制作一个用于绘制流程图 本质上是电路图 的界面 其中包含如下所示的节点 in1 gt gt out1 in2 gt in3 gt gt out2 即每个框都有多个输入边和多个输出边 为了视觉清晰度 如果所有输入边缘都分组在一侧 所有输
  • 使用应用程序包时,<1% 的用户遇到 UnsatisfiedLinkError

    我正在尝试使用新的 Android 应用程序包 我在我的设备上本地运行一些测试 一切正常 然而 一旦部署到生产中 我开始看到一些如下错误 java lang UnsatisfiedLinkError dalvik system PathCl
  • CommandLink 无法在延迟加载的 Primefaces Datascroller 上工作

    我遇到延迟加载问题Primefaces 数据卷轴 http www primefaces org showcase ui data datascroller loader xhtml成分 我有一个 jsf 页面 应该在页面加载时显示 10
  • 修复损坏的编码(使用 Python)

    我有一堆文本文件包含编码错误的韩语字符 具体来说 字符似乎是用 EUC KR 编码的 但文件本身是用 UTF8 BOM 保存的 到目前为止 我成功修复了一个文件 内容如下 使用 EditPlus 打开文件 它显示文件的编码是UTF8 BOM