Python2中print字符串含有汉字无法正常显示

demo1

Ubuntu16,Python2,且安装过中文语言什么的。

#!usr/bin/python
# -*- coding: utf-8 -*-
a = "我就是中文啊"
print("a:",a)1234

输出就是:

(‘a:‘, ‘\xe6\x88\x91\xe5\xb0\xb1\xe6\x98\xaf\xe4\xb8\xad\xe6\x96\x87\xe5\x95\x8a‘)1

各种尝试,encode和decode,都不行!咦,为啥呢?
后来才知道,Python2和Python3的输出真的不是一样的哎!

Python2中的print加了括号之后,前面有字符串,再加逗号,再加带有中文的字符串变量就是会乱码!

这种组合就是不行,所以只能打破这种组合,比如说下面这种:

#!usr/bin/python
# -*- coding: utf-8 -*-
a = "我就是中文啊"
print a1234

输出:

可以看出来,没有问题

可见并不是Ubuntu的终端不能正确显示中文的问题,而是我的操作不对,但是上面的操作很明显不能满足我的所有要求,我的字符串变量应该要和字符串的说明一起出现,才比较方便观看。
我们来看看接下来的操作:

#!usr/bin/python
# -*- coding: utf-8 -*-
a = "我就是中文啊"
print "a:%s"%a
#这里的操作应该是Python2的正常print了,可惜我一直都用了();
#自以为这样,不管是Python2还是python3都可以处理print函数
#至于%s的意思大家应该清楚,简单解释一下,%类似于取地址,s是string,字符串的意思。和c里面的输出原理类似。1234567

这里的输出如下:

a:我就是中文啊
12

美滋滋,Ubuntu下是可以解决这样的问题了。

Windows下的情况还是不一样的!

Windows下cmd中python2正确print输出带有汉字的字符串变量

题目起的有点长:
刚开始我在Windows下操作的时候,不管怎么都无法显示中文,就连上面最后一个demo都无法显示。
百度到的答案是,Windows中cmd的自带编码格式不支持utf-8,得在cmd中输入 cp65001,然后我就可以输入下面的代码,得到再下面的输出了:

#!usr/bin/python
# -*- coding: utf-8 -*-
a = "我就是中文啊"
print "a:%s"%a1234

这时候的输出才是正常的:

a:我就是中文啊1

也可以试试下面的操作:
先把cmd设置成cp936,对就是在cmd中输出cp936,然后cmd会支持gbk格式。

a = "我就是中文啊"
print a.decode(‘utf-8‘).encode(‘GBK‘)12

这里的输出就很明显了,会直接显示中文

我就是中文啊1

现在发现了最终的奥妙,也就是——如果字符串中有汉字,那么,python2不能加括号!

原文:https://blog.csdn.net/hehedadaq/article/details/81782532

原文地址:https://www.cnblogs.com/zchui/p/10189798.html

时间: 2024-08-01 15:43:28

Python2中print字符串含有汉字无法正常显示的相关文章

解决.net中截取字符串的汉字与数字还有静态扩展方法

转载 http://blog.163.com/cn_dreamgo/blog/static/52679452200961033212407/ 这两天在C#编程中应用到C#代码与C的代码信息交互,但是在信息获取的过程发现当字符串中存在中文汉字时,两种代码下获取的字符串长度不相同.查找原因为:C#中使用的unicode编码格式,默认一个汉字为一个字符.例如:    str1 = "测试";在C#中使用str1.length的到的长度是2,在C中strlen()得到的长度是4:这样在字符长处

iOS判断字符串中含不含有汉字

方法一: - (BOOL)hasChinese:(NSString *)str { for(int i=0; i< [str length];i++){ int a = [str characterAtIndex:i]; if( a > 0x4e00 && a < 0x9fff) { return YES; } } return NO; } 方法二: - (BOOL)isHasChineseWithStr:(NSString *)strFrom { for (int i=

C# 中判断字符串是不是汉字

//1.用ASCII码判断 //在 ASCII码表中,英文的范围是0-127,而汉字则是大于127,具体代码如下: string text = "是不是汉字,ABC,柯乐义"; for (int i = 0; i < text.Length; i++) { if ((int)text[i] > 127) { Console.WriteLine("是汉字"); } else { Console.WriteLine("不是汉字"); }

Python2和Python3中print的不同点

在Python2和Python3中都提供print()方法来打印信息,但两个版本间的print稍微有差异 主要体现在以下几个方面: 1.python3中print是一个内置函数,有多个参数,而python2中print是一个语法结构: 2.Python2打印时可以不加括号:print 'hello world', Python3则需要加括号   print("hello world") 3.Python2中,input要求输入的字符串必须要加引号,为了避免读取非字符串类型发生的一些行为

python 中 print 函数用法总结

Python 思想: “一切都是对象!” 在 Python 3 中接触的第一个很大的差异就是缩进是作为语法的一部分,这和C++等其他语言确实很不一样,所以要小心 ,其中python3和python2中print的用法有很多不同,python3中需要使用括号 缩进要使用4个空格(这不是必须的,但你最好这么做),缩进表示一个代码块的开始,非缩进表示一个代码的结束.没有明确的大括号.中括号.或者关键字.这意味着空白很重要,而且必须要是一致的.第一个没有缩进的行标记了代码块,意思是指函数,if 语句.

Python中的字符串与字符编码

原文地址:点击这里 本节内容: 前言 相关概念 Python中的默认编码 Python2与Python3中对字符串的支持 字符编码转换 一.前言 Python中的字符编码是个老生常谈的话题,同行们都写过很多这方面的文章.有的人云亦云,也有的写得很深入.近日看到某知名培训机构的教学视频中再次谈及此问题,讲解的还是不尽人意,所以才想写这篇文字.一方面,梳理一下相关知识,另一方面,希望给其他人些许帮助. Python2的 默认编码 是ASCII,不能识别中文字符,需要显式指定字符编码:Python3的

java判断字符串中是否含有汉字

原文:http://www.open-open.com/code/view/1426332240717 判断字符串中是否含有汉字: String str = "test中文汉字"; String regEx = "[//u4e00-//u9fa5]"; /** * 判断有没有中文 */ if (str.getBytes().length == str.length()) { System.out.println("无汉字"); } else {

oracle中如何判断一个字符串是否含有汉字

oracle中如何判断一个字符串是否含有汉字 一.1 BLOG文档结构图 一.2 前言部分 一.2.1 导读 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O(∩_∩)O~: ①全角字符的判断,或者是含有汉字的字符串的判断 本文如有错误或不完善的地方请大家多多指正,ITPUB留言或QQ皆可,您的批评指正是我写作的最大动力. 一.2.2 实验环境介绍 11.2.0.3  RHEL6.5 一.2.3 本文简介 看到网友问,怎么查询表中某个字段数据是不是包含了

c# 字符串(含有汉字)转化为16进制编码(转)

public static string Str2Hex(string s) { string result = string.Empty; byte[] arrByte = System.Text.Encoding.GetEncoding("GB2312").GetBytes(s); for(int i = 0; i < arrByte.Length; i++) { result += "&#x" + System.Convert.ToString(