[英]Java bridge code error while converting chinese characters : 'utf-8' codec can't decode byte 0xc0 in position 0: invalid start byte
[英]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的优点是你有两种类型的对象( str
和unicode
),所以从理论上讲,你可以区分原始字节和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
在我看来,你的问题可能是由以下原因引起的:
要查看它是哪一个,我建议创建一个文件夹C:\\dev
并在那里工作。 如果这样可行,那么您的主文件夹有问题或Mercurial有错误。
我有同样的问题,如果你也使用Mercurial,那么这里是解决方案:
[ui]
下面插入username = my_name_only_utf_characters <mail@example.com>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.