2024-05-14 08:02:31 发布
网友
我有一些CSV文件需要从shift jis转换为utf-8。
这是我用PHP编写的代码,它成功地将代码转换为可读文本。
$str = utf8_decode($str); $str = iconv('shift-jis', 'utf-8'. '//TRANSLIT', $str); echo $str;
我的问题是如何在Python中做同样的事情。
如果您可以发布正在尝试转换的字符串,这将很有帮助,因为此错误表明数据中存在一些问题,旧版本的PHP在断开的输入字符串上无声地失败,这使诊断变得困难。
根据documentation的说法,这也可能是由于shift-jis方言的不同,请尝试使用“shift-jisx0213”或“shift-jis-2004”。
如果使用另一种方言不起作用,则可以通过使用.decode('shift-jis','ignore')或.decode('shift-jis','replace')来让python以静默方式失败。
.decode('shift-jis','ignore')
.decode('shift-jis','replace')
因为当pythons内置的编码不足时,PyPi上有一个iconv。
iconv
pip install iconv
不幸的是,文档是不存在的。
还有iconv_codecs
iconv_codecs
pip install iconv_codecs
例如:
>>> import iconv_codecs >>> iconv_codecs.register('ansi_x3.110-1983') >>> "foo".encode('ansi_x3.110-1983')
我不懂PHP,但这有用吗:
mystring.decode('shift-jis').encode('utf-8') ?
另外,我假设CSV内容来自一个文件。在python中打开文件有几个选项。
with open(myfile, 'rb') as fin
会是第一个,你会得到数据
with open(myfile, 'r') as fin
将是默认的文件打开
此外,我还尝试了使用shift js文本进行计算,并使用了以下代码:
with open("shift.txt" , "rb") as fin : text = fin.read() text.decode('shift-jis').encode('utf-8')
结果在UTF-8中如下(没有任何错误)
' \xe3\x81\xa6 \xe3\x81\xa7 \xe3\x81\xa8'
好,我验证我的解决方案:)
第一个字符确实是好字符:“\xe3\x81\xa6”表示“E3 81 A6” 它给出了正确的结果。
你可以试试这个URL
如果您可以发布正在尝试转换的字符串,这将很有帮助,因为此错误表明数据中存在一些问题,旧版本的PHP在断开的输入字符串上无声地失败,这使诊断变得困难。
根据documentation的说法,这也可能是由于shift-jis方言的不同,请尝试使用“shift-jisx0213”或“shift-jis-2004”。
如果使用另一种方言不起作用,则可以通过使用
.decode('shift-jis','ignore')
或.decode('shift-jis','replace')
来让python以静默方式失败。因为当pythons内置的编码不足时,PyPi上有一个
iconv
。不幸的是,文档是不存在的。
还有
iconv_codecs
例如:
我不懂PHP,但这有用吗:
另外,我假设CSV内容来自一个文件。在python中打开文件有几个选项。
会是第一个,你会得到数据
将是默认的文件打开
此外,我还尝试了使用shift js文本进行计算,并使用了以下代码:
结果在UTF-8中如下(没有任何错误)
好,我验证我的解决方案:)
第一个字符确实是好字符:“\xe3\x81\xa6”表示“E3 81 A6” 它给出了正确的结果。
你可以试试这个URL
相关问题 更多 >
编程相关推荐