繁体   English   中英

Intellij IDEA:无法提交文件:'utf8'编解码器无法解码位置9的字节0xcc

[英]Intellij IDEA: Impossible to commit files: 'utf8' codec can't decode byte 0xcc in position 9

IntelliJ IDEA 14.0.1

插件: jetbrains-bitbucket-connector

我正在尝试提交文件,但得到错误:

错误:事务中止!

回滚完成中止:

在'C:\\ Users \\ \\ AppDa'附近解码:'utf8'编解码器无法解码位置9的字节0xcc:无效的连续字节!

有没有人遇到过这个错误? 怎么解决?

谢谢。

这可能不是您正在寻找的答案,但可以让您了解可能发生的事情:

在大多数系统上,文件路径由字节组成,因为文件系统是在Unicode之前数十年设计的。 通过将字节解释为UTF-8编码的字符串来对Unicode进行改进。 不幸的是,在文件名中没有办法说“这是Cp-1251”和“这是UTF-8”。 因此,“将文件名转换为字符串”代码依赖于平台的默认编码。 NTFS通过始终将文件名存储为Unicode(忽略本地代码页)来解决问题,但是当您使用在屏幕上显示它们的工具时,名称将被转换为本地代码页。

然后是Python 2,其中Unicode也以类似的方式进行了改进。 Python的优点是你有两种类型的对象( strunicode ),所以从理论上讲,你可以区分原始字节和Unicode。 当你从某个地方获得一堆字节并且逻辑上写着“这应该是Unicode”时会出现问题 - 当你从磁盘读取文件名时会发生这种情况。

在您的情况下,文件系统将包含Cp1251编码字符的字节传递给Python,但Python代码尝试将它们作为UTF-8编码的Unicode读取。 对于许多字符(<代码点128),这可以工作但是它会因代码点> 128而中断。 \\xCC是一种常见的情况,因为UTF-8使用这个字节来编码128到256之间的所有代码点。这是为什么你经常在欧洲看到这个错误 - 我们经常使用这些角色。

现在,创建Mercurial的人非常了解这一切。 大多数时候,Mercurial应该工作。 请参阅https://www.mercurial-scm.org/pipermail/mercurial/2009-January/023762.html

在我看来,你的问题可能是由以下原因引起的:

  • 不知何故,Windows使用本地代码页来创建您的主目录(不太可能)
  • Mercurial将路径视为Unicode,但出于某种原因,它认为字符串是原始字节并尝试使用UTF-8解码器进行解码。 由于解码被应用两次,因此失败。 也许你有一个旧版本的Mercurial。 尝试更新。
  • 也许您向我们展示了错误消息的错误部分,问题实际上是您尝试提交的文件。 在这种情况下,我们可以忽略错误消息中的奇数 字符。 编辑文件时,请确保使用正确的编码。

要查看它是哪一个,我建议创建一个文件夹C:\\dev并在那里工作。 如果这样可行,那么您的主文件夹有问题或Mercurial有错误。

错误是说在文件位置路径中, utf-8 字符集中不存在的字符很少,因此解码器无法解码给定的文件路径并且正在中止操作。

查看位置路径中的字符,如果其中存在任何未知字符,请更正它

'C:\\用户\\\\ AppDa'

这里 显示这些字符无法通过utf-8解码。

编辑:使用此工具检查字符串,以查看字符集编码的编码。 链接到工具

那么你可以使用那个编码器,但这不是一个实用的解决方案,使用utf-16字符集,它具有大字符集,并且它因平台和语言而异。

我有同样的问题,如果你也使用Mercurial,那么这里是解决方案:

  • 转到[项目目录] / .hg
  • 打开“hgrc”文件
  • [ui]下面插入username = my_name_only_utf_characters <mail@example.com>
  • 保存并提交

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM