【问题标题】:convert a string from encoding utf8 to 850将字符串从编码 utf8 转换为 850
【发布时间】:2021-01-12 12:48:34
【问题描述】:

我有一个以 utf8 编码的字符串,我想将其转换为 850(编码)。我已经用 R 做到了,但我不知道如何在 Python 中做到这一点:iconv(curve1,"UTF-8", "850", toRaw = TRUE)

谢谢!!

【问题讨论】:

标签: python r encoding


【解决方案1】:

对于 python 3.9

#-*- coding:utf-8 -*-
import sys
a = 'This is a bit русские буквы.'
print ("sys.stdout.encoding",sys.stdout.encoding)
print('Original string:', a)
# Encoding in utf-8
encoded_bytes = a.encode('utf-8', 'replace')
print('Encoded string:', encoded_bytes)


decoded_cp1251 = encoded_bytes.decode('cp1251', 'replace')
decoded_cp866 = encoded_bytes.decode('cp866', 'replace')
decoded_utf8 = encoded_bytes.decode('utf-8', 'replace')

sys.stdout.reconfigure(encoding='cp1251')
print ("sys.stdout.encoding",sys.stdout.encoding)
print('Decoded string: 1251', decoded_cp1251)
sys.stdout.reconfigure(encoding='cp866')
print ("sys.stdout.encoding",sys.stdout.encoding)
print('Decoded string: 866', decoded_cp866)
sys.stdout.reconfigure(encoding='utf-8')
print ("sys.stdout.encoding",sys.stdout.encoding)
print('Decoded string: utf-8', decoded_utf8)

例如输出

PS C:\Users\Dmitry\PycharmProjects\python_sqlplus> python .\test_decode2.py
sys.stdout.encoding utf-8
Original string: This is a bit русские буквы.
Encoded string: b'This is a bit \xd1\x80\xd1\x83\xd1\x81\xd1\x81\xd0\xba\xd0\xb8\xd0\xb5 \xd0\xb1\xd1\x83\xd0\xba\xd0\xb2\xd1\x8b.'
sys.stdout.encoding cp1251
Decoded string: 1251 This is a bit русские буквы.
sys.stdout.encoding cp866
Decoded string: 866 This is a bit русские буквы.
sys.stdout.encoding utf-8
Decoded string: utf-8 This is a bit русские буквы.
PS C:\Users\Dmitry\PycharmProjects\python_sqlplus>

【讨论】:

  • 您提供的代码引发以下错误:“OutStream”对象没有“重新配置”属性。我不知道是不是我的错,但我复制了它。
  • 该代码适用于 python 3.9 从 Python 3.7 开始,您可以使用 reconfigure() 更改标准流的编码:stackoverflow.com/questions/4374455/…
【解决方案2】:

试试这个

string_utf = "your utf-8 encoded string"
string_cp850 = string_utf.encode(encoding='cp850')

【讨论】:

  • 我已经尝试过这个功能,但它给出的结果与 R 代码不同,这就是我为这个任务苦苦挣扎的原因。你知道为什么不一样吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-29
  • 1970-01-01
  • 2017-02-12
相关资源
最近更新 更多