【问题标题】:how to generate unicode strings only with multi-byte characters如何仅使用多字节字符生成 unicode 字符串
【发布时间】:2015-07-22 21:25:45
【问题描述】:

如何生成一个 UTF-8 字符序列,其中每个字符由多个字节表示,并且每个字符都是从具有多字节表示的所有字符集中选择的?

我正在尝试测试我的应用程序如何处理带有多字节字符的 UTF-8。谢谢。

【问题讨论】:

  • 好吧,我要问:多字节字符是什么?拉丁1范围之外的任何东西?还是您在谈论多个 UTF-8 字节?或者 UTF-16 代码单元?并不是说您的问题是主题。
  • 我的意思是 UTF-8 字符序列,其中每个字符由多个字节表示。对不起,如果这是题外话。我在网上搜索了一个模块来执行此操作,但找不到。我重新表述了这个问题。
  • 这涵盖了 ASCII 范围之外的所有内容,因此代码点 U+0080 到 sys.maxunicode。为什么不直接使用random 模块来生成这些?

标签: python unicode utf-8 internationalization


【解决方案1】:

ASCII 范围 (U+0000 - U+007F) 之外的任何内容都会为您提供编码为多个 UTF-8 字节的 Unicode 字符。

只是随机生成那些:

import sys
import random

def random_nonascii_unicode(length):
    return u''.join(unichr(random.randint(0x80, sys.maxunicode)) for _ in range(length))

并根据需要编码为 UTF-8:

>>> random_nonascii_unicode(10)
u'\ue82a\u62ac\ufe97\u97a3\u02c5\u4955\u1ad8\u9cf7\u8cba\u62e7'
>>> random_nonascii_unicode(10).encode('utf8')
'\xe3\x98\xb8\xe6\x91\x84\xe9\x99\xab\xeb\xb3\x8d\xef\xb7\x91\xe9\x9e\x9f\xe9\x99\xb8\xee\x9a\x9d\xec\x86\x87\xed\xa1\xb0'

【讨论】:

  • 非常感谢,Martijn。
猜你喜欢
  • 2012-04-21
  • 1970-01-01
  • 2021-03-30
  • 2017-04-16
  • 2017-06-07
  • 2012-09-20
  • 1970-01-01
  • 2012-11-30
相关资源
最近更新 更多