韩文unicode编解码

问题是这样,工作中遇到有韩文数据出现乱码,说是unicode码。

类似这样:

id name323 52186863

149 63637538

314 65516863

322 69826863

290 83645668

355 724851956025

397 724862416863

246 9152960052007500

203836473ab53868350762421673ab5676538683507624183845b6863553198ce78d02694e54554a5e9c1604e5e5e9c1074e5e73ab854e5e76d47eca52a0686380ba3364e5e90f45f004644e5e90f460bc2894e5e9f8b5e9c4304eb260bc2964eb268632664ed85398529b635e80cc4284ed873ab60bc3104ed873ab80cc2124ed880ba79e63124ef691dc2914ef74e5e3244ef74ffa2444ef7541d5e9c2494ef7541d5e9c2474ef760d15e9c2504ef760d15e9c1834ef762cc5e9c3494ef768631514ef7699c2394ef76ca55e9c3484ef773ab2514ef77a8d5e9c2524ef7854a5e9c4494ef791dc5e9c3504ef79b425e9c3444f194ed85e9c3124f194ed868631914f194ed89b422484f195cbf5e9c2884f195df180cc2984f1968634524f1983e960bc394f555088788d36 4f555088788d538683507624

数据示例

在unicode中,每个韩文字符包含两个字节,四位16进制表示,下面验证一下:

linux,python2.7

>>> '전라남도'      #查看韩文字符串,每个韩文字符占3个字节(在utf-8编码下)

'\xec\xa0\x84\xeb\x9d\xbc\xeb\x82\xa8\xeb\x8f\x84'

>>> len('전라남도')

12

>>> '전라남도'.decode('utf-8')  #将韩文字符串按照utf-8解码为unicode

u'\uc804\ub77c\ub0a8\ub3c4'

>>> len('전라남도'.decode('utf-8'))

4

>>> u'전라남도'                 #系统默认将按照utf-8解码

u'\uc804\ub77c\ub0a8\ub3c4'

>>> len(u'전라남도')

4

----------------------因此把上述字符串转换为unicode----------------

>>> kr_code='4f555088788d538683507624'

>>> kr_len=len(kr_code)/4

>>> str_kr=''

>>> for i in range(kr_len):                 #16进制分组

...   str_kr=str_kr+ '\u'+kr_code[i*4:i*4+4]

...

>>> str_kr

'\\u4f55\\u5088\\u788d\\u5386\\u8350\\u7624'

>>> kr_tmp=str_kr.decode('unicode-escape')  #转换为对应的unicode

>>> kr_tmp

u'\u4f55\u5088\u788d\u5386\u8350\u7624'

>>>

----------------------将unicode按照utf-8编码----------------------

>>> print kr_tmp                            #打印输出(linux默认按照utf-8编码)

何傈碍历荐瘤

>>> kr_tmp.encode('utf-8')                  #按照utf-8编码,打印输出,

'\xe4\xbd\x95\xe5\x82\x88\xe7\xa2\x8d\xe5\x8e\x86\xe8\x8d\x90\xe7\x98\xa4'

>>> print '\xe4\xbd\x95\xe5\x82\x88\xe7\xa2\x8d\xe5\x8e\x86\xe8\x8d\x90\xe7\x98\xa4'

何傈碍历荐瘤

>>> '何傈碍历荐瘤'

'\xe4\xbd\x95\xe5\x82\x88\xe7\xa2\x8d\xe5\x8e\x86\xe8\x8d\x90\xe7\x98\xa4'

----------------------将unicode按照韩文EUC_KR编码----------------------

what?为甚么不是韩文,看来并不是utf-8编码,猜测韩文编码EUC_KR,试一下

>>> kr_tmp.encode(encoding='EUC_KR')

Traceback (most recent call last):

File "", line 1, in

UnicodeEncodeError: 'euc_kr' codec can't encode character u'\u5088' in position 1: illegal multibyte sequence

----------------------将unicode按照中文GB18030编码----------------------

>>> #并不是,打印出汉字,难道是汉字编码?

>>> gb_str=kr_tmp.encode(encoding='GB18030') #按照GB18030编码

>>> print gb_str

>>> gb_str

'\xba\xce\xc0\xfc\xb0\xad\xc0\xfa\xbc\xf6\xc1\xf6'

>>> print gb_str                             #linux下按照utf-8无法编码

������������

>>> gb_str=kr_tmp.encode(encoding='GBK')     #按照GBK编码,与GB18030兼容,在window下显示为中文(GBK)

>>> gb_str

'\xba\xce\xc0\xfc\xb0\xad\xc0\xfa\xbc\xf6\xc1\xf6'

>>> print gb_str                             #linux下按照utf-8无法编码,在window下显示为中文(GBK)

������������

----------------------将unicode按照中文GB18030编码----------------------

>>> kr_str=gb_str.decode('EUC_KR')           #按照EUC_KR编码

>>> kr_str

u'\ubd80\uc804\uac15\uc800\uc218\uc9c0'

>>> print kr_str                             #终于输出了韩文

부전강저수지

>>>

总结:

对unicode按照GB18030进行了编码====>>按照EUC_KR进行了解码====>>输出了韩文字符串

分析一下其原始unicode的产生过程:

韩文字符串====>>按照EUC_KR进行了编码====>>按照GB18030进行了解码====>>unicode

验证一下:

>>> u'부전강저수지'.encode('EUC_KR').decode(encoding='GBK')

u'\u4f55\u5088\u788d\u5386\u8350\u7624'

>>> print u'부전강저수지'.encode('EUC_KR').decode(encoding='GBK')

何傈碍历荐瘤

>>> kr_tmp

u'\u4f55\u5088\u788d\u5386\u8350\u7624'

>>>

最后:

当外文不能正常显示,显示为乱码(中文),有可能就是编码错误,本篇解决了韩文错误显示成中文的问题。

>>> text=u'捞抚绝澜'.encode('GB18030').decode('euc_kr')

>>> text

u'\uc774\ub984\uc5c6\uc74c'

>>> print text             #unicode

이름없음

>>> u_text= u'捞抚绝澜'.encode('gbk').decode('euc_kr').encode('utf-8')

>>> u_text

'\xec\x9d\xb4\xeb\xa6\x84\xec\x97\x86\xec\x9d\x8c'

>>> print u_text         #str

이름없음

韩文编码python_python中的字符串编码问题——4.unicode编解码(以实际工作中遇到的韩文编码为例)...相关推荐

  1. base64编码 vba_【VBA研究】如何用Base64 编解码方法实现简单的加解密

    Base64编码的思想是是采用64个基本的ASCII码字符对数据进行重新编码,将数据变成字符串实现文本传输.由于编码简单,所以很容易实现,代码也是现成的.利用这个编码规则可以实现简单的加解密.编解码方 ...

  2. java学习中,字符串使用(比较、构造方法)(java 学习中的小记录)

    java学习中,字符串使用(比较.构造方法)(java 学习中的小记录)作者:王可利(Star·星星) String的使用 1.在内存中是如何保存字符串. == :比较的是地址(引用数据类型) equ ...

  3. Android视频编辑器(五)音频编解码、从视频中分离音频、音频混音、音频音量调节等

    前言 这篇博客,主要讲解的是android端的音频处理,在开发Android视频编辑器的时候,有一个非常重要的点就是音频的相关处理.比如如何从视频中分离音频(保存为mp3文件),然后分离出来的音频如何 ...

  4. 视频编码零基础入门(1):视频编解码之理论概述

    1.前言 即时通讯应用中的实时音视频技术,几乎是IM开发中的最后一道高墙.原因在于:实时音视频技术 = 音视频处理技术 + 网络传输技术 的横向技术应用集合体,而公共互联网不是为了实时通信设计的.有关 ...

  5. 音视频编解码: YUV采样格式中的YUV444,YUV422,YUV420理解

    YUV各种采样格式的说明 通常我们用RGB表示一种彩色.计算机系统里的LCD显示的数据就是RGB来表示每个像素的颜色. 而在我们生活里,有黑白电视机与彩色电视机两种,拍摄节目源时不可以用两种不同的摄像 ...

  6. 讯飞sr702 怎么将文字导出_律师工作中的制胜法宝,讯飞智能录音笔SR702律师工作中的制胜法宝,讯飞智能录音笔SR702...

    在最近很多热播的律政剧中大家都注意到了律师们常用的一款神器,那就是智能录音笔.相比原来传统的录音笔只有一个录音功能,现在的录音笔经过改良,再结合人工智能增加了转写,翻译,录像等功能,让人不得不感叹,真 ...

  7. 计算机在财务核算中的应用,浅谈计算机在财务核算和财务管理工作中的辅助应用...

    浅谈计算机在财务核算和财务管理工作中的辅助应用 计算机在财务管理中的应用日益广泛,已成为企业财务管理的必要手段.计算机的应用改善了企业财务管理环境,提高了财 (本文共1页) 阅读全文>> ...

  8. 磁盘管理来安装linux,Linux_在CentOS系统中安装quota来管理磁盘配额,在网络管理的工作中,由于硬 - phpStudy...

    在CentOS系统中安装quota来管理磁盘配额 在网络管理的工作中,由于硬盘的资源是有限的,常常需要为多用户的服务器设定用户的linux磁盘配额.这个功能对公用的多用户服务器(免费的或者收费的)来说 ...

  9. 简述计算机在医院药学工作中的应用,[生物医药论文精品a]计算机在药学工作中的应用...

    计算机在药学工作中的应用高晓萍A1A0A2冯晓钰A1A3A2孙娟A1A0A2闫静华A1A0A21山东省昌邑市幼保健院药剂科,2613002山东昌邑市人民医院,261300)摘要目的A4探讨我院药房的配 ...

最新文章

  1. pku1985 Cow Marathon
  2. boost::enable_current_exception用法测试程序
  3. 洛谷P1145 约瑟夫
  4. linux下部署mysql数据库连接_Linux远程部署MySQL数据库详细步骤
  5. java判断三位数的范围代码_java判断三位数的实例讲解
  6. CF11D A Simple Task(状压DP)
  7. ecshop send.php on line 71,搭建LNMP发布ecshop系统及压测启用opcache缓存与否的情况
  8. python3中用HTMLTestRunner.py报ImportError: No module named 'StringIO'解决办法
  9. matlab画圆的命令_matlab 如何画圆
  10. 中国象棋,源码,开发,毕业设计,go,qt,c++,gin,游戏,残局,悔棋,人机,网络对战,双人
  11. 会声会影2020迅雷磁力链接bt搜索种子百度云网盘下载及有效序列号
  12. windows和linux共用蓝牙鼠标,Ubuntu和Windows双系统蓝牙设备共享配对
  13. 360全景摄影的逆光问题如何解决?
  14. Dalvik虚拟机简介
  15. 常见波形的傅里叶级数展开式
  16. 谈谈自己的未来规划和学习方法
  17. 设备移动无线网络信号质量手机APP测试工具
  18. OSSEC 学习教程一
  19. 盘点数据库2013之一:数据分析崛起
  20. 恶意病毒“四大家族”

热门文章

  1. 上海楼房倒塌玻璃坚持完好引网友关注
  2. 计算机专业英语的阅读理解,计算机专业英语阅读
  3. i5 9300h怎么样
  4. html怎么在字体中加波浪线,强大的CSS:文字下波浪线动画效果
  5. 新媒体运营应该掌握哪些基础常识
  6. MIRO增强之会计凭证行项目拆分
  7. 推荐 | 最棒的30个机器学习实例
  8. C语言 库函数 isspace() 使用方法
  9. 第2课 - Ranorex模块和测试操作
  10. 替换Spring容器中已经存在的Bean