首页 / 知识
Unicode与UTF-8在Python / Django中的混淆?
2023-04-12 21:10:00

Unicode vs UTF-8 confusion in Python / Django?我在Django教程中偶然发现了这一段:
现在,我很困惑,因为afaik Unicode没有任何特定的表示形式,那么Python中的" Unicode字符串"是什么? 这是否意味着UCS-2? 谷歌搜索出现了这个" Python Unicode教程",它大胆地指出
这是明显的错误,还是? 字符集和编码问题使我很困惑,但是在这里,我很确定我正在阅读的文档很混乱。 有谁知道Python给我一个" Unicode字符串"时发生了什么?
Python中的Unicode字符串以UCS-2(固定长度的16位表示形式,与UTF-16几乎相同)或UCS-4 / UTF-32(固定长度的32位表示形式)在内部存储。这是一个编译时选项;在Windows上,它始终是UTF-16,而许多Linux发行版都为其Python版本设置了UTF-32("宽模式")。 通常,您不必在意:您会在字符串中将Unicode代码点视为单个元素,并且不知道它们是以两个或四个字节存储的。如果您使用的是UTF-16版本,并且需要在Basic Multilingual Plane之外处理字符,那您肯定做错了,但这仍然非常罕见,确实需要额外字符的用户应该编译广泛的版本。
是的,这是完全错误的。公平地讲,我认为该教程比较老。如果不是Unicode 3.1(在基本多语言平面之外引入字符的版本),它可能早于宽的Unicode字符串。 由于Windows习惯使用术语" Unicode"来表示,特别是NT在内部使用的UTF-16LE编码,因此还引起混乱。来自Microsoftland的人们可能经常复制这种有点误导性的习惯。 同时,我进行了精细的研究,以验证Python的内部表示形式及其局限性。" Python中Unicode的真相"是一篇很好的文章,直接引用了Python开发人员。显然,内部表示是UCS-2还是UCS-4,具体取决于编译时开关。因此,乔恩(Jon),它不是UTF-16,但是您的回答还是使我走上了正轨,谢谢。 Python将Unicode存储为UTF-16。 str()将返回UTF-16字符串的UTF-8表示形式。 从UTF-8上的Wikipedia:
因此,根据您希望在Unicode领域中代表哪个字符,它可以在1到4个字节之间。 从Wikipedia上的Unicode:
因此,它能够代表世界上大多数(但不是全部)书写系统。 我希望这有帮助 :)
Python"知道"您的字符串是Unicode。因此,如果您对它进行正则表达式,它将知道哪个是字符,哪个不是字符,这真的很有帮助。如果您做得很努力,它也会给出正确的结果。例如,如果您对Hello进行了字符串计数,您将获得5(即使它是Unicode)。但是,如果您对一个外国单词进行了字符串计数,并且该字符串不是Unicode字符串,则结果将大得多。 Pythong使用Unicode字符数据库中的信息来标识Unicode字符串中的每个字符。希望能有所帮助。 |
最新内容
相关内容
关于混淆:使用混淆器是否足以保护我
关于混淆:使用混淆器是否足以保护我的JavaScript代码?,关于混淆:使用混淆器是否足以保护我的JavaScript代码?,开源项目,开发工具,产品,关于winapi:那我在WPF上缺少什么呢?
关于winapi:那我在WPF上缺少什么呢?,关于winapi:那我在WPF上缺少什么呢?,视频播放,应用程序,界面,我有一个,So what am I missing with t关于javascript:我在哪里可以学习jQ
关于javascript:我在哪里可以学习jQuery? 这值得么?,关于javascript:我在哪里可以学习jQuery? 这值得么?,证明,学习,我在,有用,Where can I我在哪里可以得到Antlr Ant任务?
我在哪里可以得到Antlr Ant任务?,我在哪里可以得到Antlr Ant任务?,调用,我在,找不到,试图,Where do I get the Antlr Ant task?我试图关于混淆:您是否混淆了商业Java代码
关于混淆:您是否混淆了商业Java代码?,关于混淆:您是否混淆了商业Java代码?,项目,产品,步骤,自己的,Do you obfuscate your commercial Ja关于混淆:我应该担心混淆我的.NET代
关于混淆:我应该担心混淆我的.NET代码吗?,关于混淆:我应该担心混淆我的.NET代码吗?,反编译,反射,他们的,我很,Should I be worried about关于动作脚本3:Flex /空气混淆
关于动作脚本3:Flex /空气混淆,关于动作脚本3:Flex /空气混淆,应用程序,安装,反编译器,写了,Flex / Air obfuscation我已经用Flex编写关于安全性:.NET混淆工具/策略
关于安全性:.NET混淆工具/策略,关于安全性:.NET混淆工具/策略,产品,组件,有几个,知识产权,.NET obfuscation tools/strategy我的产品有超详细neo4j安装教程
超详细neo4j安装教程,超,详细,neo4j,安装,教程,一,、,neo4j,简介,最近,,一、neo4j简介最近开始学习知识图谱,所以首先想先学习一下nehtml <ol> li有序列表标签元素基础
html <ol> li有序列表标签元素基础与教程篇,ol,ol li,html列表,html有序列表,html ol,html ol li,li列表,HTML ol li有序列表标签元html <ul><li>无序列表标签基础应
html <ul><li>无序列表标签基础应用教程,ul,li列表,无序列表,html li,html ul li,ul li,html列表,HTML ul li无序列表标签元素-<ul>html form <label>标签教程
html form <label>标签教程,label,html label,form label,html form <label>标签基础语法结构与使用案例教程在表单布局中会遇到labe