Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
读取其他应用程序生成的文件时出现Python unicode错误_Python_Unicode_Utf 8 - Fatal编程技术网

读取其他应用程序生成的文件时出现Python unicode错误

读取其他应用程序生成的文件时出现Python unicode错误,python,unicode,utf-8,Python,Unicode,Utf 8,我在从多个应用程序读取导出文件时遇到解码异常错误。一个月来,我一直在关注这个问题,因为我对unicode的了解远远超过了我想知道的。一些基本面仍然缺失。我了解utf,我了解代码页,我了解它们在实践中的使用方式(例如,每个文档只有一个代码页,尽管我无法想象这在今天仍然是正确的——请参阅包含15种语言的健康声明的背面。) utf-8真的可以并且确实编码所有可能的unicode字符吗?那么,一个应用程序如何能够写入utf-8文件,而另一个应用程序无法读取它呢 使用utf时,不使用代码页,对吗?正如我所

我在从多个应用程序读取导出文件时遇到解码异常错误。一个月来,我一直在关注这个问题,因为我对unicode的了解远远超过了我想知道的。一些基本面仍然缺失。我了解utf,我了解代码页,我了解它们在实践中的使用方式(例如,每个文档只有一个代码页,尽管我无法想象这在今天仍然是正确的——请参阅包含15种语言的健康声明的背面。)

  • utf-8真的可以并且确实编码所有可能的unicode字符吗?那么,一个应用程序如何能够写入utf-8文件,而另一个应用程序无法读取它呢
  • 使用utf时,不使用代码页,对吗?正如我所想,代码页是一种较旧的样式,被utf淘汰了。我肯定有些例外
  • utf也可以看作是一种数据压缩方案,而不是编码方案
  • 但在那里我被卡住了,就像在实践中一样,我在不同的国家有6个不同的应用程序,它们可以创建导出文件,3个在ut-f中,3个在cp1252中,但python 3.7无法读取它们而不会出错:

    “charmap”编解码器无法对1555855位置的字节0x9d进行解码:字符映射到 “charmap”编解码器无法对位置4179683中的字节0x81进行解码:字符映射到

    我使用editpro检查文件,它成功地读取了文件。它指向一行,该行包含一对额外的特殊双引号: 《大都会出埃及记》评论:“不仅是迄今为止最好的大都会,它还是多年来最好的射手之一”| GamesRadar+”

    删除“允许python继续读取该文件,直到出现下一个错误”

    python将其报告为charx9d,但一个(非常旧的:Codewright)旧编辑器将其报告为x94。我相信是的。已验证它是internet上的一对x94和x93,因此它必须是真实的。;-)

    这是非常麻烦的,我不知道确切的字节是什么,因为有这么多层的翻译,解释,显示格式等

    因此,x9d的visual studio调试报告是一个误导。python库将报告这一点,这是怎么回事

    这怎么可能?我找不到关于一个代码页中的字符如何在utf下无效的信息(如果这是问题的话)。我应该在什么下面搜索

    不应该这么难。我有30年的C++编程经验,你可以说,学习新的图书馆,语言只是早餐。 我也不明白为什么处理这件事的信息这么难找到。当然,在应用程序之间进行数据转换、导入/导出的许多其他程序员几十年来都遇到过这种情况

    我要导入的文件是来自6个应用程序的csv文件,以及来自另一个应用程序的json文件。这6个应用程序以utf-8和cp1252格式导出(如Edit Pro所报告),而另一个应用程序以utf-8格式导出json,尽管我也可以选择csv

    这6个应用程序在iPhone上运行,并导出我试图在Windows10上读取的文件。我运行的是Python3.7.8,尽管这个问题自3.6.3以来一直存在

    提前谢谢


    Dan

    错误
    'charmap'编解码器无法解码字节…
    表明您没有使用utf-8读取文件。这就是你在这件事上挣扎的根源。除非文件以BOM(字节顺序标记)开头,否则您必须知道文件是如何编码的,才能正确解码

  • utf-8编码所有unicode字符,python应该能够读取所有字符。展示是另一回事。您需要unicode字符的字体文件来完成这一部分。你读的是“charmap”,而不是“utf-8”,这就是你出错的原因

  • “使用utf时”。。。有几种UTF编码。utf-8、utf-16-be(big-endian)、utf-16-le(little-endian)、utf-16(utf-16-le的同义词)、utf-32变体(我在野外从未见过)以及包含BOM(字节顺序标记)的变体,BOM是描述utf编码类型的文件开头的一组可选字符

  • 但是,UTF编码是用来取代旧的代码页编码的

  • 不,不是压缩。编码流可能大于在内存中保存字符串所需的字节数。utf-8尤其如此,而utf-16更是如此(这就是为什么微软选择了utf-16)。但是utf-8作为ASCII的超集,没有像utf-16那样的字节顺序问题,还有许多其他优势(这就是为什么所有理智的人都选择它)。我想不出有哪种情况下UTF编码会小于它的字符数

  • 嗨,丹,拥有30多年的编程经验真是太棒了。但是,您可以通过提供代码来发布更具沟通性的问题,这样每个人都可以轻松理解您的目标。还要确保您的问题符合的标准。我认为默认值是utf8与字符串相同。我的语言环境是cp1252。但解决这一问题并不能解决问题,尽管它集中了问题的焦点。设置endcoding=“utf-8”给出:错误:“意外的utf-8 BOM(使用utf-8-sig解码):第1行第1列”。encoding=“utf-8-sig”给出相同的错误消息!使用前unicode编辑器读入显示文件前面有一个双BOM 0xEFBBBF!Edit Pro跳过该选项,并以utf-8正确打开它。我一直在尝试研究这个问题,并在python和vs2019中解决它。我早就应该找到一个十六进制文件编辑器了。到目前为止,python/vs2019阻碍了查看实际读取的内容。往返编码错误可能与产生双BOM的应用程序有关,尽管这是一个单一的。@DanJ2754-您可以打开二进制文件,读取一位并将其转换为十六进制进行调试<代码>打开('myfile.txt','rb')。读取(32).hex('')2。在上个月阅读了成百上千的网页后,从来没有人提到utf-8不应该与代码页一起使用。就像我说的,不应该这么难!不同意的决定