Python中如何进行中文转换?

求助,类似这种字符串,如何转换为中文

a = u’\u7f8e\u56feT9\u9890\u548c\u56ed\u9650\u91cf\u7248\uff086GB RAM/\u5168\u7f51\u901a\uff09’
Python中如何进行中文转换?

10 回复

print(a)


在Python里处理中文转换,主要看你具体想转什么。是编码、简繁体,还是拼音?这里给你几个最常用的方法:

1. 编码转换(比如文件乱码时)

# 假设你从gbk编码的文件读到了乱码字节
gbk_bytes = b'\xd6\xd0\xce\xc4'  # "中文"的gbk编码
utf8_str = gbk_bytes.decode('gbk')  # 转为Unicode字符串
print(utf8_str)  # 输出:中文

# 再转成utf-8字节
new_bytes = utf8_str.encode('utf-8')

2. 简繁体转换opencc-python库:

import opencc

converter = opencc.OpenCC('s2t')  # 简体转繁体
result = converter.convert('中文转换')
print(result)  # 输出:中文轉換

3. 中文转拼音pypinyin库:

from pypinyin import pinyin, Style

# 获取带声调的拼音
result = pinyin('中文', style=Style.TONE)
print(result)  # 输出:[['zhōng'], ['wén']]

# 不带声调
result = pinyin('中文', style=Style.NORMAL)
print(result)  # 输出:[['zhong'], ['wen']]

4. 全角/半角转换

def strQ2B(ustring):
    """全角转半角"""
    ss = []
    for s in ustring:
        rstring = ""
        for uchar in s:
            inside_code = ord(uchar)
            if inside_code == 12288:  # 全角空格
                inside_code = 32
            elif 65281 <= inside_code <= 65374:  # 全角字符
                inside_code -= 65248
            rstring += chr(inside_code)
        ss.append(rstring)
    return ''.join(ss)

print(strQ2B('中文,。!'))  # 输出:中文,。!

总结:先明确你要转什么,再选对应的库。

或者

windows: print(a.encode(‘gbk’))
linux: print(a.encode(‘utf-8’))

这个字符串可以直接使用,而且是跨语言的,你的需求是什么?想在 IDE 看到汉字?

多谢,我的需求是将这个字符串写入数据库的话,读出来还是不是中文了

哪位大佬帮看看这个问题 https://www.v2ex.com/t/472366


理论上这个字串在其他语言也能识别的,读出来处理没问题
怕不保险可以这样转一次再存:

In [6]: u’\u2665’.encode(“utf8”).decode(‘utf8’)
Out[6]: '♥’
In [9]: ‘\u7f8e’.encode(“gbk”).decode(‘gbk’)
Out[9]: ‘美’

>>> print(a.encode(‘utf8’).decode(‘utf8’))
美图 T9 颐和园限量版( 6GB RAM/全网通)

存入 DB 的时候 encode(‘utf8’)变成 bytes 类型,从 DB 读取的时候 decode(‘utf8’)变成 str

回到顶部