免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1946 | 回复: 9
打印 上一主题 下一主题

python的unicode字符串 [复制链接]

论坛徽章:
7
处女座
日期:2014-08-23 21:10:59程序设计版块每日发帖之星
日期:2015-06-15 22:20:00程序设计版块每日发帖之星
日期:2015-06-20 22:20:00程序设计版块每日发帖之星
日期:2015-07-05 22:20:00每日论坛发贴之星
日期:2015-07-05 22:20:00操作系统版块每日发帖之星
日期:2015-07-13 23:17:46程序设计版块每日发帖之星
日期:2015-12-16 06:20:00
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-12-11 21:21 |只看该作者 |倒序浏览
python 有unicode串的用法,  如 str1 = u'hello中'

str2= 'hello中'

请问有什么区别?

str1在内存中, 每个字符用  2个字节存储,如果不加u,在内存中多少个字节?

论坛徽章:
26
2015亚冠之胡齐斯坦钢铁
日期:2015-06-25 21:40:202015亚冠之柏斯波利斯
日期:2015-08-31 17:03:192015亚冠之柏斯波利斯
日期:2015-11-07 13:10:00程序设计版块每日发帖之星
日期:2015-11-10 06:20:00每日论坛发贴之星
日期:2015-11-10 06:20:00程序设计版块每日发帖之星
日期:2015-11-26 06:20:00程序设计版块每日发帖之星
日期:2015-12-02 06:20:00黄金圣斗士
日期:2015-12-07 17:57:4615-16赛季CBA联赛之天津
日期:2015-12-23 18:34:14程序设计版块每日发帖之星
日期:2016-01-02 06:20:00程序设计版块每日发帖之星
日期:2016-01-06 06:20:00每日论坛发贴之星
日期:2016-01-06 06:20:00
2 [报告]
发表于 2015-12-11 21:51 |只看该作者
本帖最后由 substr函数 于 2015-12-11 21:53 编辑

回复 1# chouxiaoya8100
Python源代码也是一个文本文件,所以,当你的源代码中包含中文的时候,在保存源代码时,就需要务必指定保存为UTF-8编码。

# coding: utf-8
# -*- coding: utf-8 -*-

hello 每个字符用  1个字节
中 utf8 3个字节

   

论坛徽章:
1
操作系统版块每日发帖之星
日期:2016-06-12 06:20:00
3 [报告]
发表于 2015-12-11 22:35 |只看该作者
{this.p="\u5317\u4EAC,\u4E0A\u6D77,\u5929\u6D25,\u6E56\u5357,\u6E56\u5317,\u5185\u8499\u53E4,\u5E7F\u4E1C,\u5E7F\u897F,\u91CD\u5E86,\u56DB\u5DDD,\u5C71\u4E1C,\u6CB3\u5357,\u6CB3\u5317,\u5C71\u897F,\u8D35\u5DDE,\u9ED1\u9F99\u6C5F,\u798F\u5EFA,\u6D59\u6C5F,\u6C5F\u82CF,\u6C5F\u897F,\u6D77\u5357,\u9655\u897F".split(",");this.n="\u5F20,\u5218,\u5468,\u5434,\u6731,\u9648,\u7530,\u949F,\u9A6C,\u97E9,\u987E,\u738B,\u674E,\u5362,\u5D14,\u6BB5,\u80E1,\u6F58,\u8D75,\u6797,\u4EE3,\u82CF,\u845B,\u6BDB,\u848B".split(",");this.a="\u5C0F\u59D0,\u5148\u751F,\u5973\u58EB".split(",");this.m="13,15,18".split(",");this.c=n;this.c1=c.split("^");


文件内容是这种,怎么打印出中文呢?

论坛徽章:
0
4 [报告]
发表于 2015-12-12 00:31 |只看该作者
  1. >>> print u'\u5317\u4EAC,\u4E0A\u6D77'
  2. 北京,上海
复制代码

论坛徽章:
7
处女座
日期:2014-08-23 21:10:59程序设计版块每日发帖之星
日期:2015-06-15 22:20:00程序设计版块每日发帖之星
日期:2015-06-20 22:20:00程序设计版块每日发帖之星
日期:2015-07-05 22:20:00每日论坛发贴之星
日期:2015-07-05 22:20:00操作系统版块每日发帖之星
日期:2015-07-13 23:17:46程序设计版块每日发帖之星
日期:2015-12-16 06:20:00
5 [报告]
发表于 2015-12-12 13:12 |只看该作者
回复 4# ma__


为什么 中国,上海之间的逗号, 不能用\u这种表示法?

而直接书写逗号就可以了。

论坛徽章:
7
处女座
日期:2014-08-23 21:10:59程序设计版块每日发帖之星
日期:2015-06-15 22:20:00程序设计版块每日发帖之星
日期:2015-06-20 22:20:00程序设计版块每日发帖之星
日期:2015-07-05 22:20:00每日论坛发贴之星
日期:2015-07-05 22:20:00操作系统版块每日发帖之星
日期:2015-07-13 23:17:46程序设计版块每日发帖之星
日期:2015-12-16 06:20:00
6 [报告]
发表于 2015-12-12 13:15 |只看该作者
回复 2# substr函数


是不是这么理解?

字符串的编码在内存中是utf8, 这个是python解释器 规定!!

但 书写的代码所存的文件格式编码(存在磁盘中的),这种编码方式是有用户规定!!1





   

论坛徽章:
7
处女座
日期:2014-08-23 21:10:59程序设计版块每日发帖之星
日期:2015-06-15 22:20:00程序设计版块每日发帖之星
日期:2015-06-20 22:20:00程序设计版块每日发帖之星
日期:2015-07-05 22:20:00每日论坛发贴之星
日期:2015-07-05 22:20:00操作系统版块每日发帖之星
日期:2015-07-13 23:17:46程序设计版块每日发帖之星
日期:2015-12-16 06:20:00
7 [报告]
发表于 2015-12-12 21:08 |只看该作者
还有人吗? 帮忙看看

论坛徽章:
0
8 [报告]
发表于 2015-12-13 00:52 |只看该作者
>>> str1 = u'hello中'
>>> type(str1)
<type 'unicode'>
>>> str2= 'hello中'
>>> type(str2)
<type 'str'>

默认字符串都用ASCII编码,加个‘u前缀的方式声明unicode字符串’

# -*- coding: utf-8 -*-     该文件中的字符串都以utf8编码

论坛徽章:
7
处女座
日期:2014-08-23 21:10:59程序设计版块每日发帖之星
日期:2015-06-15 22:20:00程序设计版块每日发帖之星
日期:2015-06-20 22:20:00程序设计版块每日发帖之星
日期:2015-07-05 22:20:00每日论坛发贴之星
日期:2015-07-05 22:20:00操作系统版块每日发帖之星
日期:2015-07-13 23:17:46程序设计版块每日发帖之星
日期:2015-12-16 06:20:00
9 [报告]
发表于 2015-12-13 12:02 |只看该作者
回复 8# ma__


指出一个错误:

ansi不是asicc, asicc只是一个字符表,8个比特位,无法存储汉字。 所以代码中的汉字‘中’, 明显是ansi。

ansi是指 gb2312, gb18030一类的多字节编码方式。这类编码确实是一个中文字符2个字节,一个英文字符1个字节,


但是如果源文件换了编码方式,那么中文字符的长度可能就变化,你比如换成utf-8。


————————分割线——————————

为了统一字符在内存中的长度, 最好强制 python源文件的编码方式。

不对的,请指出。





   

论坛徽章:
26
2015亚冠之胡齐斯坦钢铁
日期:2015-06-25 21:40:202015亚冠之柏斯波利斯
日期:2015-08-31 17:03:192015亚冠之柏斯波利斯
日期:2015-11-07 13:10:00程序设计版块每日发帖之星
日期:2015-11-10 06:20:00每日论坛发贴之星
日期:2015-11-10 06:20:00程序设计版块每日发帖之星
日期:2015-11-26 06:20:00程序设计版块每日发帖之星
日期:2015-12-02 06:20:00黄金圣斗士
日期:2015-12-07 17:57:4615-16赛季CBA联赛之天津
日期:2015-12-23 18:34:14程序设计版块每日发帖之星
日期:2016-01-02 06:20:00程序设计版块每日发帖之星
日期:2016-01-06 06:20:00每日论坛发贴之星
日期:2016-01-06 06:20:00
10 [报告]
发表于 2015-12-14 11:12 |只看该作者
回复 9# chouxiaoya8100

ANSI
美国国家标准学会(American National Standards Institute,ANSI)
是负责制定美国国家标准的非营利组织。

ASCII
(发音:英语发音:/ˈæski/ ASS-kee[1],American Standard Code for Information Interchange,美国信息交换标准代码)
是基于拉丁字母的一套电脑编码系统。
   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP