导航:首页 > 编程语言 > python韩文编码

python韩文编码

发布时间:2022-12-07 09:44:02

python的编码问题,一个小例子让人很困惑

其实,字典中的uxxxx或者x..之类 就是utf-8编码,经过解码就是汉字了


print 打印的字符是自动解码的。(根据第一行的 coding:utf-8)

print 打印的字典、列表之类的对象,一般没经过解码


如果你要输出解码的汉字,处理方法:

一,对每个scrapy抓取的数据都进行for循环decod

a={1:"你好",2:"谢谢",3:"对不起",4:"hi"}
forkina.keys():
printk,a[k].decode("utf-8")


二,使用json.mps

a={1:"你好",2:"谢谢",3:"对不起",4:"hi"}
importjson
printjson.mps(a,encoding='UTF-8',ensure_ascii=False)

⑵ python是什么编码格式

python编码总结:
1).首先python有两种格式的字符串,str和unicode,其中unicode相当于字节码那样,可以跨平台使用。
str转化为unicode可以通过unicode(),u,str.decode三种方式
unicode转化为str,如果有中文的话,一般通过encode的方式
2).如果代码中有中文的话,我们一般会添加 "# coding=utf-8",这个是什么作用呢,一般如下:
如果代码中有中文注释,就需要此声明比较高级的编辑器(比如我的emacs),会根据头部声明,将此作为代码文件的格式。程序会通过
头部声明,解码初始化 u”人生苦短”,这样的unicode对象,(所以头部声明和代码的存储格式要一致
所以,当我们填上编码头的时候,使用s="中文",实际上type(s)是一个str,是已经将unicode以utf-8格式编码成str。
其次,如果我们在代码中使用s=u'中文',相当于将str以utf-8解码成unicode。
推荐学习《python教程》。

⑶ python3.3中文乱码与默认编码格式设定。

我这边输出没有什么问题。

下面是输出:
i = 1
s['statuses'][0]['text'] = 出轨是男人的天性,防小三是女人一生的战役。
s['statuses'][1]['text'] = 漂亮女孩有时候比普通女孩更可怜。男人可以很坦然的拒绝普通女孩的感情和身体,但是男人会欺骗漂亮女孩的感情从而得到她的身体。这就是为什么古人说红颜命薄,你们感受一下。
s['statuses'][2]['text'] = 留几手教你如何利用空闲时间学习
。。。
i = 2
s['statuses'][20]['text'] = 骂人,其实内容并不重要,一个小萝莉,满嘴脏话,也吓不住人。
。。。
i = 3
s['statuses'][40]['text'] = 我不就是在你家住的时候吃了几只烧鸡没给你钱么?至于这么编排我么?这情节都是你在哪本言情小说里扒出来的吧?
后面省略了。 前提就是这个样子的

⑷ python3.4 编码有哪些

Python3中的编码问题前,第一个段落对字节、ASCII与Unicode与UTF-8等进行基本介绍,如果不对这几种编码犯头晕,可直接跳过。
ASCII与Unicode与UTF-8与GBK

首先从老大哥说起。跟很多人一样,大学读了这么久,久仰ASCII编码的大名。要说这个老大哥,我们再先从字节说起。一个字节包括八个比特位,每个比特位表示0或1,一个字节即可表示从00000000到11111111共2^8=256个数字。一个ASCII编码使用一个字节(除去字节的最高位作为作奇偶校验位),ASCII编码实际使用一个字节中的7个比特位来表示字符,共可表示2^7=128个字符。比如那时写C语言的程序,就经常要背下ASCII编码中的01000001(即十进制的65)表示字符‘A’,01000001加上32之后的01100001(即十进制的97)表示字符‘a’。现在打开Python,调用chr和ord函数,我们可以看到Python为我们对ASCII编码进行了转换。

第一个00000000表示空字符,因此ASCII编码实际上只包括了
字母、标点符号、特殊符号等共127个字符。因为ASCII是在美国出生的,对于由字母组成单词进而用单词表达的英文来说也是够了。但是中国人、日本人、
韩国人等其他语言的人不服了。中文是一个字一个字,ASCII编码用上了浑身解数256个字符都不够用。

因此后来出现了Unicode编码。Unicode编码通常由两个字节组成,共表示256*256个字符,即所谓的UCS-2。某些偏僻字还会用到四个字节,即所谓的UCS-4。也就是说Unicode标准也还在发展。但UCS-4出现的比较少,我们先记住:最原始的ASCII编码使用一个字节编码,但由于语言差异字符众多,人们用上了两个字节,出现了统一的、囊括多国语言的Unicode编码。

在Unicode中,原本ASCII中的127个字符只需在前面补一个全零的字节即可,比如前文谈到的字符‘a’:01100001,在Unicode中变成了00000000 01100001。不久,美国人不开心了,吃上了世界民族之林的大锅饭,原本只需一个字节就能传输的英文现在变成两个字节,非常浪费存储空间和传输速度。

人们再发挥聪明才智,于是出现了UTF-8编码。因为针对的是空间浪费问题,因此这种UTF-8编码是可变长短的,从英文字母的一个字节,到中文的通常的三个字节,再到某些生僻字的六个字节。解决了空间问题,UTF-8编码还有一个神奇的附加功能,那就是兼容了老大哥的ASCII编码。一些老古董软件现在在UTF-8编码中可以继续工作。

注意除了英文字母相同,汉字在Unicode编码和UTF-8编码中通常是不同的。比如汉字的‘中’字在Unicode中是01001110
00101101,而在UTF-8编码中是11100100 10111000
10101101。

我们祖国母亲自然也有自己的一套标准。那就是GB2312和GBK。当然现在挺少看到。通常都是直接使用UTF-8。记得我唯一一次看到GB编码的网页,是一个成人网站。

Python3中的默认编码

Python3中默认是UTF-8,我们通过以下代码:

import sys

sys.getdefaultencoding()

可查看Python3的默认编码。

Python3中的encode和decode

Python3中字符编码经常会使用到decode和encode函数。特别是在抓取网页中,这两个函数用的熟练非常有好处。我的理解,encode的作用,使我们看到的直观的字符转换成计算机内的字节形式。decode刚好相反,把字节形式的字符转换成我们看的懂的、直观的、“人模人样”的形式。如下图。

\x表示后面是十六进制,\xe4\xb8\xad即是二进制的11100100 10111000
10101101。也就是说汉字‘中’encode成字节形式,是11100100 10111000
10101101。同理,我们拿11100100
10111000 10101101也就是\xe4\xb8\xad来decode回来,就是汉字‘中’。完整的应该是b'\xe4\xb8\xad',在Python3中,以字节形式表示的字符串则必须加上前缀b,也就是写成上文的b'xxxx'形式。

前文说的Python3的默认编码是UTF-8,所以我们可以看到,Python处理这些字符的时候是以UTF-8来处理的。因此从上图可以看到,就算我们通过encode('utf-8')特意把字符encode为UTF-8编码,出来的结果还是相同:b'\xe4\xb8\xad'。

明白了这一点,同时我们知道UTF-8兼容ASCII,我们可以猜想大学时经常背诵的‘A’对应ASCII中的65,在这里是不是也能正确的decode出来呢。十进制的65转换成十六进制是41,我们尝试下:

b'\x41'.decode()

结果如下。果然是字符‘A’

Python3中的编码转换

据说字符在计算机的内存中统一是以Unicode编码的。只有在字符要被写进文件、存进硬盘或者从服务器发送至客户端(例如网页前端的代码)时会变成utf-8。但其实我比较关心怎么把这些字符以Unicode的字节形式表现出来,露出它在内存中的庐山正面目的。这里有个照妖镜:

xxxx.encode/decode('unicode-escape')

输出如下

b'\\u4e2d'还是b'\u4e2d,一个斜杠貌似没影响。同时可以发现在shell窗口中,直接输'\u4e2d'和输入b'\u4e2d'.decode('unicode-escape')是相同的,都会打印出汉字‘中’,反而是'\u4e2d'.decode('unicode-escape')会报错。说明说明Python3不仅支持Unicode,而且一个‘\uxxxx’格式的Unicode字符可被辨识且被等价于str类型。

如果我们知道一个Unicode字节码,怎么变成UTF-8的字节码呢。懂了以上这些,现在我们就有思路了,先decode,再encode。代码如下:

xxx.decode('unicode-escape').encode()

测试如下:

可以看到最后输出的UTF-8字节与上面的相同。尝试成功。所以其他的编码之间的转换,大概也是如此。

最后的扩展

还记得刚刚那个ord吗。时代变迁,老大哥ASCII被人合并,但ord还是有用武之地。试试ord('中'),输出结果是20013。20013是什么呢,我们再试试hex(ord('中')),输出结果是'0x4e2d',也就是20013是我们在上文见面了无数次的x4e2d的十进制值。这里说下hex,是用来转换成十六进制的函数,学过单片机的人对hex肯定不会陌生。

最后的扩展,在网上看到的他人的问题。我们写下类似于'\u4e2d'的字符,Python3知道我们想表达什么。但是让Python读取某个文件的时候出现了'\u4e2d',是不是计算机就不认识它了呢?后来下文有人给出了答案。如下:

import codecs

file = codecs.open( "a.txt", "r", "unicode-escape" )

u = file.read()

print(u)

⑸ python有哪几种编码方式

第一种:ASCII码。是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言,它是现今最通用的单字节编码系统,并等同于国际标准IS/IEC
646。
由于计算机是美国人发明的,因此,最早只有127个字母被编码到计算机李,也就是大小写英文字母、数字和一些符号,这个编码表被称为ASCII编码,比如大写字母A的编码是65,小写字母a的编码是97,后128个称为扩展ASCII码。
第二种:GBK和GB2312。能在计算机中显示中文字符是至关重要的,然而ASCII表里一个偏旁部首都没有,所以我们需要一个关于中文和数字对应的关系表,一个字节只能最多表示256个字符,用处理中文显然一个字节是不够的,所以我们需要采用两个字节来表示,所以中国制定了GB2312编码,用来将中文编写进去。
第三种:Unicode。因为各个国家都有一套自己的编码,所以无法避免冲突,因此Unicode诞生了。它可以把所有语言都统一到一套编码里,这样就不会存在乱码问题了,现代操作系统和大多数编程语言都直接支持Unicode。
第四种:UFT-8。基于节约的原则,出现了把Unicode编码转化为可变长编码的UTF-8编码。而UTF-8编码把一个Unicode字符根据不同的数字大小编码成1-6个字节,常用的英文字母被编码成一个字节,汉字通常是3个字节,只有很生僻的字符才会被编码成4-6个字节,如果你要传输的文本包含大量英文字符,用UTF-8编码就能节省空间。

⑹ Python设定系统默认编码

Python系统默认编码是ascii,有中文时会有问题,需要修改默认编码为utf-8,方法如下:

⑺ Python中的几种特殊数据类型小结

下面介绍了Python中的6种特殊数据类型:

1.list:列表

是一种有序的数据集合,在列表数据结构中的类型并不唯一

定义形式:L=['Micha',100,True]

输出整个列表的时候显示为['Micha',100,True]

输出单个的数值则为:Micha

a.访问,直接使用L[0]表示第一个元素或者使用L[-1]表示最后一个数据,以此类推,但是注意访问不能越界(访问的序号不能超过元素的总数)。

b.添加新元素:使用L.append(100)直接将100加入列表末尾,或者使用L.insert(0,'paul')将paul插入任意位置。

c.删除元素:L.pop()删除最后一个元素,或者L.pop(2)删除第2个位置的元素。

d.替换元素:直接赋值就可以了L[2]=100

2.tuple:元组

是一种有序的列表,但是其一旦创立完毕就不能够更改,即不能插入,删除里面的元素,访问的方式跟List结构一致。

a.t=()其打印后输出的形式是()

若t中的数据为一个数字则需要在后面加逗号,以区分普通数字,如t=(1,),打印出(1,)而非1,多元素的话则没有这个要求。

b.可以在不变的tuple中加入可变的List如t=(‘a’,'b',['A','B'])

3.dict:字典

d = {

'Adam': 95,

'Lisa': 85,

'Bart': 59

}

len()函数可以计算任意集合的大小

其中可以简单地使用d[key]的形式来查找对应的value,这和list很像,不同之处是,list必须使用索引返回对应的元素,而dict使用key,当key不存在的时候,使用该key可能出现错误,因此:要避免KeyError发生,有两个办法:

一是先判断一下key是否存在,用in操作符:

if'Paul' in d:

print d['Paul']

如果'Paul'不存在,if语句判断为False,自然不会执行print d['Paul'],从而避免了错误。

二是使用dict本身提供的一个get方法,在Key不存在的时候,返回None:

>>>print d.get('Bart')

59

a.dict中的key不能重复,且dict中的存储的对应值没有顺序,打印出的东西可能是无序的

b.dict的更新:使用d[‘paul']=72求解

c.dict遍历:

d = {'Adam': 95, 'Lisa': 85, 'Bart': 59 }

>>>for key in d:

...print key

遍历只能获得key的值,需要通过key值获得对应的value

4.set:集合

无序但是所有元素唯一,不重复

a.定义:s = set(['A', 'B', 'C']),查看set的内容:

>>>print s

set(['A','C', 'B'])

可以用in来判断是否存在于集合中

b.遍历

s =set([('Adam', 95), ('Lisa', 85), ('Bart', 59)])

for xin s:

print x[0]+':',x[1]

c.添加元素到集合中

s.add(4)

d.删除元素

s.remove(4)若该元素不在集合中将会报错

5.Unicode编码

Python在后来添加了对Unicode的支持,以Unicode表示的字符串用u'...'表示,比如:

printu'中文'

注意:不加u,中文就不能正常显示中文。

a.转义形式:u'中文 日文 韩文'

b.输出多行:

u'''第一行

第二行'''

c.raw+多行的形式:

ur'''Python的Unicode字符串支持"中文",

"日文",

"韩文"等多种语言'''

如果中文字符串在Python环境下遇到UnicodeDecodeError,这是因为.py文件保存的格式有问题。可以在第一行添加注释

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

目的是告诉Python解释器,用UTF-8编码读取源代码。然后用Notepad++另存为, 并选择UTF-8格式保存。

6.raw的作用

如果一个字符串包含很多需要转义的字符,对每一个字符都进行转义会很麻烦。为了避免这种情况,我们可以在字符串前面加个前缀r,表示这是一个“raw”字符串,里面的字符就不需要转义了。例如:

r'(~_~)//'

但是r'...'表示法不能表示多行字符串,也不能表示包含'和"的字符串,如果要表示多行字符串。

⑻ Python字符编码使用什么码

在python 2中默认编码是ASCII,而在python 3中默认编码是unicode。

⑼ 关于python中字符编码的问题

你说的是,把字符串:
\u3232\u6674
本身,转换为unicode字符吧?

那么可以通过:
slashUStr = "\\u3232\\u6674";
decodedUniChars = slashUStr.decode("unicode-escape");
print "decodedUniChars=",decodedUniChars; #decodedUniChars= (有) 晴

注:(有) 是个特殊字符,如果想要在cmd(默认为gbk)中打印,会出错的。
UnicodeEncodeError: 'gbk' codec can't encode character u'\u3232' in position 0: illegal multibyte sequence

但是,本身的确已经是转换好了unicode字符串了。

详情可参考:
【整理】Python中,如何将反斜杠u类型(\uXXXX)的字符串,转换为对应的unicode的字符

(此处不能贴地址,请用google搜标题,即可找到帖子地址)

⑽ 怎么在Python里使用UTF-8编码

概述

在python代码即.py文件的头部声明即可

解析

py文件中的编码

Python 默认脚本文件都是 ANSCII 编码的,当文件 中有非 ANSCII 编码范围内的字符的时候就要使用"编码指示"来修正一个 mole 的定义中,如果.py文件中包含中文字符(严格的说是含有非anscii字符),则需要在第一行或第二行指定编码声明:

# -*- coding=utf-8 -*-

#coding=utf-8

# 以上两种选其一即可

其他的编码如:gbk、gb2312也可以;否则会出现:

SyntaxError: Non-ASCII character 'xe4' in file test.py on line 3, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details

python中的编码与解码

先说一下python中的字符串类型,在python中有两种字符串类型,分别是 str 和 unicode,他们都是basestring的派生类;

str类型是一个包含Characters represent (at least) 8-bit bytes的序列;

unicode 的每个 unit 是一个 unicode obj;

在str的文档中有这样的一句话:

    The string data type is also used to represent arrays of bytes, e.g., to hold data read from a file.

也就是说在读取一个文件的内容,或者从网络上读取到内容时,保持的对象为str类型;如果想把一个str转换成特定编码类型,需要把str转为Unicode,然后从unicode转为特定的编码类型如:utf-8、gb2312等。

拓展内容

utf-8编码

UTF-8(8-bit Unicode Transformation Format)是一种针对Unicode的可变长度字符编码,也是一种前缀码。它可以用来表示Unicode标准中的任何字符,且其编码中的第一个字节仍与ASCII兼容,这使得原来处理ASCII字符的软件无须或只须做少部分修改,即可继续使用。因此,它逐渐成为电子邮件、网页及其他存储或发送文字的应用中,优先采用的编码。

UTF-8使用一至六个字节为每个字符编码(尽管如此,2003年11月UTF-8被RFC 3629重新规范,只能使用原来Unicode定义的区域,U+0000到U+10FFFF,也就是说最多四个字节):

1、128个US-ASCII字符只需一个字节编码(Unicode范围由U+0000至U+007F)。

2、带有附加符号的拉丁文、希腊文、西里尔字母、亚美尼亚语、希伯来文、阿拉伯文、叙利亚文及它拿字母则需要两个字节编码(Unicode范围由U+0080至U+07FF)。

3、其他基本多文种平面(BMP)中的字符(这包含了大部分常用字,如大部分的汉字)使用三个字节编码(Unicode范围由U+0800至U+FFFF)。

4、其他极少使用的Unicode辅助平面的字符使用四至六字节编码(Unicode范围由U+10000至U+1FFFFF使用四字节,Unicode范围由U+200000至U+3FFFFFF使用五字节,Unicode范围由U+4000000至U+7FFFFFFF使用六字节)。

对上述提及的第四种字符而言,UTF-8使用四至六个字节来编码似乎太耗费资源了。但UTF-8对所有常用的字符都可以用三个字节表示,而且它的另一种选择,UTF-16编码,对前述的第四种字符同样需要四个字节来编码,所以要决定UTF-8或UTF-16哪种编码比较有效率,还要视所使用的字符的分布范围而定。不过,如果使用一些传统的压缩系统,比如DEFLATE,则这些不同编码系统间的的差异就变得微不足道了。若顾及传统压缩算法在压缩较短文字上的效果不大,可以考虑使用Unicode标准压缩格式(SCSU)。

互联网工程工作小组(IETF)要求所有互联网协议都必须支持UTF-8编码。互联网邮件联盟(IMC)建议所有电子邮件软件都支持UTF-8编码。

阅读全文

与python韩文编码相关的资料

热点内容
程序员必装的6款软件 浏览:746
基于单片机的遥控器设计 浏览:517
安卓如何取消圆图标 浏览:11
收件服务器怎么样 浏览:48
建筑设计规范pdf 浏览:98
如何合并两个pdf 浏览:174
刷机包必须要解压的单词 浏览:483
android课表实现 浏览:864
头条app在哪里能看见有什么活动 浏览:511
冰柜压缩机电容80欧 浏览:609
安卓各个版本图标什么样 浏览:152
无锡哪里有制作手机app 浏览:538
php字符串转json数组 浏览:6
数控网络编程课程有哪些 浏览:482
python30特效程序编码 浏览:392
安卓跟苹果互传照片用什么 浏览:848
原创小说app哪个好看 浏览:97
首台湖南造鲲鹏服务器云服务器 浏览:268
redhatphp 浏览:456
android智能家居蓝牙 浏览:646