为了索引和搜索,我需要“展平”许多Unicode字符串.例如,我需要将GötheФ€转换为ASCII.最后两个字符在ASCII中没有密切的表示,因此可以完全丢弃它们.所以我期待的

echo iconv("UTF-8", "ASCII//TRANSLIT//IGNORE", "GötheФ€");

是Gothe,但它输出Gothe?EUR.

除了字母之外,我还喜欢各种各样的Unicode数字和标点符号,例如句点,逗号,短划线,斜线等等,用它们最接近的ASCII对应物替换,这是ASCII // TRANSLIT // IGNORE在iconv函数中已经但不是没有为Unicode字符生成一些垃圾输出,因为它无法找到任何ASCII替换.我希望这些角色完全被忽略.

如何获得预期的结果?有没有更好的方法,也许使用intl库?

解决方法:

你选择了一个难题.最好告诉用户输入Unicode字符以自己音译ASCII.为他们做这件事只会在他们不同意你的音译时打乱他们.

无论你使用什么音译策略,你都不会取悦所有人,因为不同的人对不同的角色规定了不同的含义.让一个人高兴的音译会激怒另一个人.除非你让每个人在Unicode中使用他们想要的任何字符,否则你不会让每个人都开心.

但是生活很刺耳,令人反感,所以我们走了:

这个PHP代码:

function toASCII( $str )

{

return strtr(utf8_decode($str),

utf8_decode(

'ŠŒŽšœžŸ¥µÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýÿ'),

'SOZsozYYuAAAAAAACEEEEIIIIDNOOOOOOUUUUYsaaaaaaaceeeeiiiionoooooouuuuyy');

}

上面的PHP函数所做的是替换utf8_decode的第一个参数中的每个Unicode字符,并将其替换为utf8_decode的第二个参数中的相应字符.

例如,UnicodeÀ被音译为ASCII A,并且å被转换为a.您必须为您认为音译为ASCII字符的每个Unicode字符指定此字符.对于其他人,删除它们或通过另一个音译算法运行它们.

您将需要查看95,221个其他字符,这些字符可能会音译为ASCII.它成为“何时不再是A?”的存在主义游戏.那个看起来像A的Klingon角色和路线图标志怎么样?鱼的性格看起来像一个.谁说什么是什么?

这是很多工作,但如果你正在清理数据库输入,你必须创建一个白色的字符列表并阻止其他野蛮人,让他们在护城河,这是唯一可靠的方式.

标签:transliteration,iconv,php,unicode,character-encoding

来源: https://codeday.me/bug/20190901/1781816.html

php unicode转ascii,php – 将Unicode字符转换为等效的ASCII字符相关推荐

  1. 在LabVIEW中将十六进制转换为十进制或ASCII

    更新 Nov 12, 2020 环境 软件 LabVIEW 在LabVIEW中,如何将十六进制值转换为十进制值?当前,我正在尝试使用"扫描值功能",但不确定需要连接什么. 我正在与 ...

  2. 字符编码笔记:ASCII,Unicode和UTF-8

    很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同的状态,以表示世界上的万物.他们看到8个开关状态是好的,于是他们把这称为"字节". 再后来,他们又做了一些可以处理 ...

  3. 字符编码笔记:ASCII,Unicode和UTF-8(转) + BASE64

    原文出处:http://www.ruanyifeng.com/blog/2007/10/ascii_unicode_and_utf-8.html 今天中午,我突然想搞清楚Unicode和UTF-8之间 ...

  4. 字符编码笔记:ASCII,Unicode和UTF-8(转载)

    字符编码笔记:ASCII,Unicode和UTF-8 作者: 阮一峰 日期: 2007年10月28日 今天中午,我突然想搞清楚Unicode和UTF-8之间的关系,于是就开始在网上查资料. 结果,这个 ...

  5. 【ZZ】字符编码笔记:ASCII,Unicode和UTF-8

    2019独角兽企业重金招聘Python工程师标准>>> 今天中午,我突然想搞清楚Unicode和UTF-8之间的关系,于是就开始在网上查资料. 结果,这个问题比我想象的复杂,从午饭后 ...

  6. 三种常见字符编码简介:ASCII、Unicode和UTF-8

    什么是字符编码? 计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理.最早的计算机在设计时采用8个比特(bit)作为一个字节(byte),所以,一个字节能表示的最大的整数就是255( ...

  7. 转:字符编码笔记:ASCII,Unicode 和 UTF-8

    转: http://www.ruanyifeng.com/blog/2007/10/ascii_unicode_and_utf-8.html 作者: 阮一峰 日期: 2007年10月28日 今天中午, ...

  8. 字符编码笔记:ASCII,Unicode和UTF-8(转)

    转自:http://www.ruanyifeng.com/blog/2007/10/ascii_unicode_and_utf-8.html 今天中午,我突然想搞清楚Unicode和UTF-8之间的关 ...

  9. 【转】字符编码笔记:ASCII、Unicode、UTF-8 和 Base64

    1. ASCII码 我们知道,在计算机内部,所有的信息最终都表示为一个二进制的字符串.每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态(-128~127),这被称为一 ...

最新文章

  1. RTTI(三)相关函数1【转自大富翁】
  2. httpservletresponse 一次导出多个word_报表工具能实现怎么的导出效果?
  3. 用matlab定义2020年元旦是星期三,如何用matlab实现某年某月某日是星期几的问题,...
  4. 当深度学习遇上量化交易——公开信息篇
  5. 计算机组成原理输入实验报告,计算机组成原理实验报告
  6. Maven学习(二)————Maven核心概念(一)
  7. 都别争了!分布式锁也是锁
  8. 封装工具类DBUtils、DateUtils详解
  9. maplab(2):ROVIOLI简介
  10. 通过 mpu6050加速度计算角度
  11. 上火了该如何是好 五招让你轻松消火
  12. 洛谷P4643 [国家集训队]阿狸和桃子的游戏
  13. elasticsearch-8.0.0报错总结(ES)-持续更新
  14. 学生评语管理系统软件测试,学生评语管理系统测试版
  15. 在百度地图上展示dwg/dxf
  16. 我和 flow.ci 的第一次亲密接触
  17. 优化之Joiner组件
  18. MATLAB~~~描绘散点图函数scatter
  19. 不止会下棋,人工智能还能高考阅卷
  20. solr 一些前缀例如:q、fq、df 的用法

热门文章

  1. 「我的工作是制造混沌」,我与 Chaos Mesh® 的故事
  2. 白话解析B+树并附Java完整实现
  3. php端口泛站群,PHP 零距离泛站群程序 附操作教程与思路解析
  4. 支付宝的「社交」到底行不行?
  5. 度申相机DVP2 SDK 使用指南
  6. [tensorflow] Aanconda安装完后spyde中import tensorflow失败问题解决
  7. Jps命令—使用详解
  8. 阿里云MVP携司机宝举办武汉首场技术沙龙,聚焦物流供应链金融创新
  9. 背景图片用css能隐藏吗,用css实现鼠标悬停时隐藏背景图片的问题
  10. 空构造方法java_java 构造方法