宿迁腾云网络网站建设公司

腾云网络 八年经验专注网站建设
  • 首页
  • 服务项目
    • 网站建设
    • 微信小程序
    • APP开发
    • SEO优化
  • 建站费用
  • 成功案例
    • 网站建设案例
    • 小程序案例
    • APP开发案例
    • SEO优化案例
  • 行业动态
    • 网站建设
    • SEO优化
    • 技术日志
  • 联系我们
    • 关于我们
首页 > 行业动态 > 技术日志 > 实例讲述实现转中文及转换默认编码的方法(二)

实例讲述实现转中文及转换默认编码的方法(二)

2021-07-21

本文介绍了实现转中文的方法和默认编码。分享给大家,供大家参考,如下:

一、 爬取网页信息的时候,经常需要把“\\\\\\\”之类的东西转成中文,其实就是中文编码。可以使用以下方法进行转换:

1、

>>> s = u'\u4eba\u751f\u82e6\u77ed\uff0cpy\u662f\u5cb8'
>>> print s
人生苦短,py是岸

2、

>>> s = r'\u4eba\u751f\u82e6\u77ed\uff0cpy\u662f\u5cb8'
>>> s = s.decode('unicode_escape')
>>> print s
人生苦短,py是岸

二、另外,":'' can't in 0-5: not in (128)"的字符编码问题经常遇到编码错误。

通常可以使用以下方法:

import sys
reload(sys)
sys.setdefaultencoding('utf-8')

这个方法就是把默认编码改成utf-8。但是这种方法不是一次性修复的,可能会使一些代码表现得很奇怪。

关于 sys.('utf-8') 的补充:

sys.('utf-8')导致的两个大问题

简单来说,这样做会使一些代码行为变得怪异,而且这种怪异性并不容易修复,因为存在一个不可见的错误。下面我们举两个例子。

1.编码错误

import chardet
def print_string(string):
  try:
    print(u"%s" % string)
  except UnicodeError:
    print u"%s" % unicode(byte_string, encoding=chardet.detect(string)['encoding'])
print_string(u"þ".encode("latin-1"))
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
print(key_in_dict('þ'))

输出:

$~ þ
$~ þ

以上代码中,默认编码无法解码。 þ -1 编码十六进制表示 c3 be,这显然超过了 128 个字符的代码集。引发异常并进入异常处理。异常处理将基于代码检测和最可能解码的代码,输出将更加可靠。

一旦我们设置为utf-8,因为utf-8的字符范围被-1完全覆盖了,所以我们就直接使用utf-8进行解码了。 c3 be 是 utf-8 中的 þ。所以我们打印出完全不同的字符。

你可能会说我们不写这样的代码。如果我们写了它们,我们会进行更正。但是如果是这样写的第三方库呢?项目依赖的第三方库就是这么有问题。如果不依赖第三方库,那么下面这个bug就逃不掉了。

2.行为异常

假设我们想找出一个键是否存在。一般来说,可行的方法有两种。

#-*- coding: utf-8 -*-
d = {1:2, '1':'2', '你好': 'hello'}
def key_in_dict(key)
  if key in d:
    return True
  return False
def key_found_in_dict(key):
  for _key in d:
    if _key == key:
      return True
  return False

我们来对比一下改变系统默认编码前后这两个函数的输出。

实例讲述实现转中文及转换默认编码的方法(二)(图1)

#-*- coding: utf-8 -*-
print(key_in_dict('你好'))
print(key_found_dict('你好'))
print(key_in_dict(u'你好'))
print(key_found_in_dict(u'你好'))
print('------utf-8------')
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
print(key_in_dict('你好'))
print(key_found_dict('你好'))
print(key_in_dict(u'你好'))
print(key_found_in_dict(u'你好'))

输出:

$~ True
$~ True
$~ False
$~ False
$~ ------utf-8------
$~ True
$~ True
$~ False
$~ True

可以看到,改变默认编码后,两个函数的输出不再一致。

dict 的 in 操作符对键进行哈希运算,并比较哈希值,以确定它们是否相等。对于集合中的字符,无论是字节字符类型还是类型,哈希值都是一样的。例如{'1':1}中的u'1'会返回True,超出代码集的字符,如上例中的“”,byte字符类型的hash和type的hash是不同的.

== 运算符进行转换,将字节字符(byte,上面的'')转换为(u'')类型,然后比较转换后的结果。在系统默认编码中,"" to的转换会产生:: to both to-them as,因为超出代码集的代码集无法转换,系统会默认不相等。当系统代码被我们手动改成utf-8后,这个禁忌就被解除了,“你好”就可以成功转换了。最终结果是in和==的行为不再一​​致。

问题的根源:在

为了让它的语法看起来简洁易用,做了很多事情。一个例子是字节和文本之间的混淆。

实例讲述实现转中文及转换默认编码的方法(二)(图2)

中,共有三种类型,(text),str(字节,二进制数据),它们是前两种的父类型。

其实,在语言设计领域,一个字节串(of)是否应该被当作一个字符串()一直存在争议。众所周知的Java和C#投了反对票,却站在了支持者的阵营。其实在很多情况下,我们对文本进行的正则匹配、字符替换等操作,对于字节来说都是不必要的。并且认为字节是字符,所以它们的操作集是一样的。

此外,它会在必要时尝试进行字节的自动类型转换,例如在上面的 == 或连接字节和文本时。没有(),两种不同类型之间的转换是不可能的,所以需要一个默认的编码。在它诞生的年代,它是最受欢迎的(可以这么说),所以我选择了它。但是,众所周知,在需要转换的场景(128个字符吃饱)是没用的。

经过这么多年的抱怨php unicode编码转汉字,3终于学会了怎么做人。默认编码为,表示所有需要转换的情况都可以正确转换成功。

最佳做法

说了这么多,如果你不迁移到 3,你能做什么?

有几点建议:

所有文本都应该是 type,而不是 str。如果您正在操作文本并且类型为 str,那么您正在创建一个错误。

实例讲述实现转中文及转换默认编码的方法(二)(图3)

当你需要转换时,显式转换。要将字节解码为文本,请使用 var.(),将文本编码为字节,请使用 var.()。

从外部读取数据时,默认为php unicode编码转汉字,然后变成需要的文本;同理,当文本需要向外发送时,就变成字节然后发送。

PS:这里有一些与编码转换操作相关的工具供大家参考:

在线/中文转换工具:

/在线代码转换工具:

在线汉字/代码/代码转换工具:

更多对相关内容感兴趣的读者可以查看本站专题:《编码操作技巧总结》、《图片操作技巧总结》、《数据结构与算法教程》、《编程技巧总结》、 《函数使用技巧》《总结》《字符串操作技巧总结》《入门与高级经典教程》《文件与目录操作技巧总结》

希望这篇文章对大家的程序设计有所帮助。

Tag: 字符编码 编码转换
网站制作公众号

宿迁腾云网络网站建设公司 | 网站开发 | 网站制作 | 网站优化

咨询电话:13160355545

上一篇

返回栏目

下一篇

免责声明:本站所有文章和图片均来自用户分享和网络收集,文章和图片版权归原作者及原出处所有,仅供学习与参考,请勿用于商业用途,如果损害了您的权利,请联系网站客服处理。

热推

  • php技术第一阶段:基础阶段(PHP程序员)重点:熟练掌握LNMPphp mvc技术架构图
  • 这2个函数json_encode()该函数主要用来将数组和对象
  • 国产博客程序:这款长须的备选方案(图)
  • php网站开发实例编程7300万开发者在2021年搞了哪些开源事?php如何开发网站
  • wap网站建设疑问
  • php语言视频教程 百度云国外大牛疯狂尝试把PHP代码转换为Rust的语法,然后你就可以编译为原生可移植性php语言视频教程
  • 为什么PHP不适合于比小型业余网站更大的网站
  • 软件开发实战:php+mysql开发实战下载开源监控软件的前世今生:谷歌趋势图(上)php开发实战 pdf下载
  • 免费php开源企业网站PHP开发技术具备成熟开源代码及模板Web开发领域主流技术php企业开源
  • php高级程序设计:模式、框架与测试一下使用Php语言开发网站都需要注意什么?-八维教育php高级程序设计模式,框架和测试 pdf

相关

字符编码转换类,支持ANSI、big、UTF-8+Bom互相

字符编码转换类,支持ANSI、big、UTF-8+Bom互相

PHP()函数字符编码转换的问题讲解更新时间:2019年03

字符串按要求的字符编码来转换有bug怎么办

字符串按要求的字符编码来转换有bug怎么办

php网站如何攻击美国学生可以编程或正在学习的前10种编码语

php网站如何攻击美国学生可以编程或正在学习的前10种编码语

php代码做成图片格式我将为大家介绍如何使用PHP语言来编码

PHP开发用到了编码与解码,将转为中文转这样

PHP开发用到了编码与解码,将转为中文转这样

四种常见文本文件编码方式ANSI编码:无文件头(文件编码开头

四种常见文本文件编码方式ANSI编码:无文件头(文件编码开头

Andy'sBlog»编码,编码转换ת,批量转换

php实现汉字转编码的方法:首先创建一个PHP示例文件

用php实现中文汉字与16进制编码转换的几个例子

标签

seo(1182) 市场营销(661) 网站制作(573) 网站建设(564) 搜索引擎(553) 网站(482) PHP(361) 编程语言(345) 建站(294) 关键词排名优化(267) 网站建设公司(245) 优化(216) seo排名(207) 域名(190) 软件(171) 网站优化(148) 搜索引擎优化(146) 外链(141) 科技(136) 网站关键词(124) 网站排名优化(123) 域名服务器(120) 网站排名(107) 时政(103) 排名优化(95) 搜索引擎收录(93) 网站设计(92) 电子商务(88) 引擎(86) 移动互联网(85) 开发框架(79) 开发(75) 网站服务器(74) 框架(68) 前端开发(68) 网站分析(66) 网站建设方案(65) 关键(64) 流量(63) 源码(62) 百度优化(62) 网站权重(61) 开放源代码(59) seo培训(53) 网页设计(51) 百度(51) php框架(50) 网站建设知识(50) 大数据(50) 谷歌(49)
宿迁腾云网络网站建设公司
网站建设
  • 私人定制
  • 标准模板建站
  • 经济模板建站
精品模板

宿迁腾云网络网站建设公司

联系电话:13160355545

公司地址:江苏省宿迁市丽景湾华庭北门都市花园公寓9楼907

联系邮箱:admin@tyweb.net

全国分站
  • 北京
  • 广东
  • 东莞 广州 中山 深圳 惠州 江门 珠海 汕头 佛山 湛江 河源 肇庆 潮州 清远 韶关 揭阳 阳江 云浮 茂名 梅州 汕尾
  • 山东
  • 济南 青岛 临沂 济宁 菏泽 烟台 泰安 淄博 潍坊 日照 威海 滨州 东营 聊城 德州 莱芜 枣庄
  • 江苏
  • 苏州 徐州 盐城 无锡 南京 南通 连云港 常州 扬州 镇江 淮安 泰州 宿迁
  • 河南
  • 郑州 南阳 新乡 安阳 洛阳 信阳 平顶山 周口 商丘 开封 焦作 驻马店 濮阳 三门峡 漯河 许昌 鹤壁 济源
  • 上海
  • 河北
  • 石家庄 唐山 保定 邯郸 邢台 沧州 秦皇岛 张家口 衡水 廊坊 承德
  • 浙江
  • 温州 宁波 杭州 台州 嘉兴 金华 湖州 绍兴 舟山 丽水 衢州
  • 陕西
  • 西安 咸阳 宝鸡 汉中 渭南 安康 榆林 商洛 延安 铜川
  • 湖南
  • 长沙 邵阳 常德 衡阳 株洲 湘潭 永州 岳阳 怀化 郴州 娄底 益阳 张家界 湘西
  • 重庆
  • 福建
  • 漳州 泉州 厦门 福州 莆田 宁德 三明 南平 龙岩
  • 天津
  • 云南
  • 昆明 红河 大理 文山 德宏 曲靖 昭通 楚雄 保山 玉溪 丽江 临沧 思茅 西双版纳 怒江 迪庆
  • 四川
  • 成都 绵阳 广元 达州 南充 德阳 广安 阿坝 巴中 遂宁 内江 凉山 攀枝花 乐山 自贡 泸州 雅安 宜宾 资阳 眉山 甘孜
  • 广西
  • 贵港 玉林 北海 南宁 柳州 桂林 梧州 钦州 来宾 河池 百色 贺州 崇左 防城港
  • 安徽
  • 芜湖 合肥 六安 宿州 阜阳 安庆 马鞍山 蚌埠 淮北 淮南 宣城 黄山 铜陵 亳州 池州 巢湖 滁州
  • 海南
  • 三亚 海口 琼海 文昌 东方
  • 江西
  • 南昌 赣州 上饶 吉安 九江 新余 抚州 宜春 景德镇 萍乡 鹰潭
  • 湖北
  • 武汉 宜昌 襄樊 荆州 恩施 孝感 黄冈 十堰 咸宁 黄石 仙桃 随州 天门 荆门 潜江 鄂州 神农架
  • 山西
  • 太原 大同 运城 长治 晋城 忻州 临汾 吕梁 晋中 阳泉 朔州
  • 辽宁
  • 大连 沈阳 丹东 辽阳 葫芦岛 锦州 朝阳 营口 鞍山 抚顺 阜新 本溪 盘锦 铁岭
  • 黑龙江
  • 齐齐哈尔 哈尔滨 大庆 佳木斯 双鸭山 牡丹江 鸡西 黑河 绥化 鹤岗 伊春 大兴安岭 七台河
  • 内蒙古
  • 赤峰 包头 通辽 呼和浩特 乌海 鄂尔多斯 呼伦贝尔
  • 贵州
  • 贵阳 黔东 黔南 遵义 黔西 毕节 铜仁 安顺 六盘水
  • 甘肃
  • 兰州 天水 庆阳 武威 酒泉 张掖 陇南 白银 定西 平凉 嘉峪关 临夏 金昌 甘南
  • 青海
  • 西宁 海西 海东 海北 果洛 玉树 黄南
  • 新疆
  • 乌鲁木齐 伊犁 昌吉 石河子 哈密
  • 西藏
  • 拉萨 山南 林芝 日喀则
  • 吉林
  • 长春 白山 白城 延边 松原 辽源 通化 四平
  • 宁夏
  • 银川 吴忠 中卫 石嘴山 固原
SiteMap
网站地图
TAG标签
Copyright © 2017-2025 TYWEB.NET 宿迁腾云网络科技有限公司 ALL RIGHTS RESERVED.   苏ICP备17033535号-1

热门搜索

百度 下载 2025 2024 2026 货源 货货源 虚拟 禅道 报名 金蝶KIS旗舰版
  • 客服

    在线客服

  • 电话

    13160355545

  • 微信

精品模板
建站费用
成功案例
联系我们