相关疑难解决方法(0)

Python/Django中的Unicode与UTF-8混淆?

我在Django教程中偶然发现了这段话:

Django模型有一个默认的str()方法,它调用unicode()并将结果转换为UTF-8字节串.这意味着unicode(p)将返回一个Unicode字符串,str(p)将返回一个普通字符串,其字符编码为UTF-8.

现在,我很困惑,因为afaik Unicode不是任何特定的表示,那么Python中的"Unicode字符串"是什么?这是否意味着UCS-2?谷歌搜索出现了这个"Python Unicode教程",大胆地说明了这一点

Unicode是一种双字节编码,涵盖了世界上所有常见的书写系统.

这是完全错误的,还是它?我已经多次被字符集和编码问题搞糊涂了,但在这里我很确定我正在阅读的文档很混乱.当有人给我一个"Unicode字符串"时,是否有人知道Python中发生了什么?

python django unicode

30
推荐指数
2
解决办法
1万
查看次数

迭代unicode字符串并与python字典中的unicode进行比较


我有两个包含日语单词和字符信息的python词典:

  1. vocabDic:包含词汇,关键词:单词,值:带有相关信息的词典
  2. kanjiDic:包含汉字(单日语字符),键:汉字,值:字典及其相关信息

    现在我想遍历vocabDic中每个单词的每个字符,并在汉字字典中查找这个字符.我的目标是创建一个csv文件,然后我可以将其作为词汇表和汉字的连接表导入数据库.
    我的Python版本是2.6
    我的代码如下:

    kanjiVocabJoinWriter = csv.writer(open('kanjiVocabJoin.csv', 'wb'), delimiter=',', quotechar='|', quoting=csv.QUOTE_MINIMAL)
    kanjiVocabJoinCount = 1
    
    #loop through dictionary
    for key, val in vocabDic.iteritems():
        if val['lang'] is 'jpn': # only check japanese words
            vocab = val['text']
            print vocab
            # loop through vocab string
            for v in vocab:
                 test = kanjiDic.get(v)
                 print v
                 print test
                 if test is not None:
                    print str(kanjiVocabJoinCount)+','+str(test['id'])+','+str(val['id'])
                    kanjiVocabJoinWriter([str(kanjiVocabJoinCount),str(test['id']),str(val['id'])])
                    kanjiVocabJoinCount = kanjiVocabJoinCount+1
    
    Run Code Online (Sandbox Code Playgroud)

如果我将变量打印到命令行,我得到:
vocab:works,print in japanese
v(for循环中的一个字符): test
(字符在kanjiDic中查找):None

对我来说似乎是for循环使编码混乱.
我尝试了各种功能(解码,编码..)但到目前为止没有运气.
关于如何让这个工作的任何想法?
非常感谢帮助.

python unicode

9
推荐指数
1
解决办法
6362
查看次数

sys.maxunicode是什么意思?

CPython在内部将unicode字符串存储为utf-16或utf-32,具体取决于编译选项.在utf-16版本的Python字符串切片,迭代中,len似乎可以处理代码单元,而不是代码点,因此多字节字符的行为很奇怪.

例如,在CPython 2.6上使用sys.maxunicode= 65535:

>>> char = u'\U0001D49E'
>>> len(char)
2
>>> char[0:1]
u'\uu835'
>>> char[1:2]
u'\udc9e'
Run Code Online (Sandbox Code Playgroud)

根据Python文档,sys.maxunicode"为Unicode字符提供最大支持代码点的整数".

这是否意味着unicode无法保证操作超出代码点sys.maxunicode?如果我想使用BMP之外的字符,我必须使用utf-32构建或编写我自己的便携式unicode操作吗?

我在如何迭代Python 3中的Unicode字符时遇到了这个问题

python unicode

7
推荐指数
1
解决办法
2322
查看次数

标签 统计

python ×3

unicode ×3

django ×1