UTF-8于1993年首次提出。人们会认为24年足以让它无处不在,特别是考虑到Internet是全球性的。 ASCII甚至不包括法文字母,更不用说西里尔文或梵文(印地语脚本)。 这就是为什么ASCII是由ISO-8859-1代替, 那种覆盖了西方语言的正字法的大部分

88.3%的网站使用UTF-8 。 这还不够,但让我们假设这11.7%的用户不接受任何输入,而只是英语静态网站。 仍在等待采用UTF-8的问题是ASCII / ISO-8859-1的根深蒂固。 我将尝试举一些例子:

  • 在许多核心Java类中,UTF-8并不是默认编码。 例如,FileReader。 其他语言和运行时也是如此。 这些Java类的默认编码是JVM默认值,通常是ISO-8859-1。 据称它是从操作系统中获取的,但是我不记得在操作系统上配置任何编码。 只是区域设置,这是非常不同的。
  • 许多框架,工具和容器默认情况下不使用UTF-8(并且不要尝试补救默认情况下不使用UTF-8的JVM)。 我认为Tomcat的默认URL编码仍然是ISO-8859-1。 Eclipse默认情况下不会使文件成为UTF-8(在我的机器上甚至是Windows-1251(西里尔文),这太可怕了)。 等等。 我过去曾要求将UTF-8设置为默认值 ,然后我再次拨打电话
  • 正则表达式示例和教程始终为您提供[a-zA-Z0-9]+正则表达式,以“验证字母数字输入”。 它内置在许多验证框架中。 这是完全错误的。 这是一个正则表达式,除非您有很好的解释,否则绝不能在代码中的任何位置出现。 然而,这个例子无处不在。 相反,正确的正则表达式为[\p{L}0-9]+ 。 使用错误的正则表达式意味着您将无法接受任何特殊字符。 这是您几乎不想要的东西。 除非可能是由于下一个问题。
  • 浏览器在使用UTF-8 URL时遇到问题。 为什么? 这很复杂 。 当它不是域名的一部分时,它几乎可以工作。 几乎是因为复制URL时,它搞砸了(请原谅–编码)。
  • Microsoft Excel无法与CSV中的UTF-8一起正常使用。 我很困惑地意识到UTF-8 CSV变成了垃圾。 好吧,不是如果您有BOM(字节顺序标记),而是[当前年份]。

正如乔恩·斯基特(Jon Skeet)正确指出的那样 -我们在最基本的数据类型上遇到了问题-字符串,数字和日期。 部分原因是现实世界很复杂。 部分原因是我们的软件工程师倾向于将其简化。 这就是我们对ASCII和其他仅拉丁语编码的处理。 但是,让我们忘记ASCII和ISO-8859-1。 在经过24年的UTF-8训练后,甚至称其为“传统”也是不可行的。 24年后,它应该已经死了。

让我们不要给出不适用于UTF-8的正则表达式示例,不要假定与UTF-8不同的默认值是个好主意,让我们对URL进行排序。

也许我听起来教条主义。 也许我夸大了,因为我的本机脚本是非拉丁文的。 但是,如果我们希望我们的软件具有全球性(并且希望拥有更大的市场,那么我们就必须这样做),那么我们就必须对基本编码问题进行分类。 仅将UTF-8作为标准是不够的。 让我们忘记ISO-8859-1。

翻译自: https://www.javacodegeeks.com/2017/01/forget-iso-8859-1.html

忘记ISO-8859-1相关推荐

  1. 一文读懂字符编码(ASCII、ISO 8859、GB系列、Unicode)

    一文读懂字符编码(ASCII.ISO 8859.GB系列.Unicode) 一.字符编码相关组织 1.1 ANSI 美国国家标准学会 1.2 Ecma 国际 1.3 ISO/IEC 1.4 统一码联盟 ...

  2. 【转】刨根究底字符编码之四——EASCII及ISO 8859字符编码方案

    1. 计算机出现之后,首先逐渐从美国发展到了欧洲.由于欧洲很多国家所用到的字符中,除了基本的.美国也用的那128个ASCII字符之外,还有很多衍生的拉丁字母等字符.比如,在法语中,字母上方有注音符号: ...

  3. 各种ISO 8859字符集

    ISO/IEC 8859-1 (Latin-1) - 西欧语言 ISO/IEC 8859-2 (Latin-2) - 中欧语言 ISO/IEC 8859-3 (Latin-3) - 南欧语言.世界语也 ...

  4. php iso 8859 1 解码,关于php:Apache的默认编码是ISO-8859-1,但网站是UTF-8?

    我必须第一次处理编码,我对PHP.Apache和浏览器如何处理编码感到困惑.PHP和Apache默认使用ISO-8859-1,但大多数网站是UTF-8.什么时候ISO-8859-1转换成了UTF-8? ...

  5. 字符编码的故事(ASCII ISO GBK GB2312 UTF-8)

    转载自:http://yuncode.net/article/a_520afe25b065d13 另有一篇对"UTF-8 GBK UTF8 GB2312 之间的区别和关系"描述比较 ...

  6. 为什么SOTIF(ISO/PAS 21448)是无人驾驶安全的关键?

    在无人驾驶汽车的研发过程中,人工智能(AI)和机器学习起着重要作用.相应的,无人驾驶(和半无人驾驶)汽车的软件开发团队又要面临新的安全挑战:如何在故障未发生时保证预期功能安全?为了解决这一问题,新的I ...

  7. AIX 系统的启动和关机

    AIX 系统的启动和关机 系统启动模式 缺省的情况下,系统将用正常模式下的引导设备列表来引导.当机器正常启动时,系统将完成AIX启动的全过程,包括激活终端,并在各个终端上显示登录提示符,用于多用户访问 ...

  8. mysql存json将utf8编码 去掉,MySQL对JSON类型UTF-8编码导致中文乱码探讨

    原文:https://www.cnblogs.com/CreateMyself/p/12587426.html 前言 继上文发表之后,结合评论意见并亲自验证最终发现是编码的问题,但是对于字符编码还是有 ...

  9. MySQL对JSON类型UTF-8编码导致中文乱码探讨

    继上文发表之后,结合评论意见并亲自验证最终发现是编码的问题,但是对于字符编码还是有点不解,于是乎,有了本文,我们来学习字符编码,在学习的过程中,我发现对于MySQL中JSON类型的编码导致数据中文出现 ...

  10. 《XML实用大全》一

    第1章 XML概览 本章将向读者介绍XML的基本知识以及概略地解释什么是XML以及如何使用XML.还要向读者说明如何将各种不同的XML表达式组合在一起,XML文档是如何创建的并如何向人们发送这种文档. ...

最新文章

  1. Science论文:诺奖经济学家的经典决策模型,被AI挑战
  2. 不想当管理者、甚至连项目经理都也不想当,只想静心写写代码、不做管理
  3. 从Golang调度器的作者视角探究其设计之道!
  4. 动态规划(五) 最大连续子序列和(Maximum Continuous Subsequence Sum)
  5. java注册中心nacos_spring-cloud整合nacos做注册中心
  6. C/C++ getopt()函数的介绍及使用
  7. 【Java 多线程】互斥锁,自旋锁和读写锁
  8. Set,List,Collection,Collections的区别?
  9. selenium API
  10. php限制上传类型,php 上传类型限制的简单示例
  11. 维护2G网络的稳定必须提升到战略高度
  12. Java 多线程编程基础(详细)
  13. 简单学习HTML图片轮播(初学)
  14. 在2018年使用xp是怎样的体验
  15. 4g网络设置dns地址_网速变慢?你可能需要先设置好 DNS | 科普
  16. 利用Python控制德国Vialux DMD 2021-10-03
  17. 【超详细】零基础自学网络安全,来收藏这一篇就够了(白嫖60G网安教程)
  18. [DIY]如何制作一款个性的收音机
  19. 基于java的千千影评网站的设计与实现(论文+程序设计源码+数据库文件)
  20. Snort预处理器之`sfPortscan`

热门文章

  1. android 7 uc flash player,大神教你解决win7系统uc浏览器提示flash player遭到阻止的详细办法...
  2. CTFWeb——Bugku秋名山老司机 详细题解
  3. android如何区分模拟器和真机
  4. 循环队列front==rear
  5. cesium添加填充_项目中的一个关于cesium的边界线的问题
  6. CentOS7像外部163邮箱发送邮件
  7. IxChariot测试网络设备性能
  8. matlab非单位阶跃响应,MATLAB下二阶系统的单位阶跃响应
  9. GD32官方固件库(标准外设库)下载
  10. Python批量快速合并excel文件