我使用MySQL排序规则从unicode_general_ci数据库中获取行。列包含中文字符,如格拉巴酒和蒸馏物,我需要显示这些字符。
我知道,i应该使用utf-8编码:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />,但我不能:我正在开发一个遗留应用程序,其中大多数.php文件都保存为ANSI,整个站点使用:
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />有什么方法来展示它们吗?
额外的问题:我尝试手动更改Chrome (工具-> Encodig -> UTF-8)的编码,它似乎不起作用:页面被重新加载了,但是?而不是显示汉字。
发布于 2014-08-26 19:50:33
我不确定你能不能。iso-8859-1通常被称为“拉丁文1”。根本不支持任何亚洲汉字类型的语言。
ISO 8859-1编码它所称的“拉丁字母1号”,由191个拉丁字母组成。这种字符编码方案广泛应用于美洲、西欧、大洋洲和非洲大部分地区.它也是常用的大多数标准浪漫的东亚语言。
发布于 2014-08-26 20:08:09
您可以使用数字实体引用( 格 )等来显示格。在这种情况下,页的编码不重要;HTML引用总是引用Unicode代码点。
PHP有一个用于此目的的函数htmlentities,但您似乎需要处理数字实体的变通方法。这个黑客攻击相当晦涩,但在编程上可能是最简单的。
echo preg_replace('/\\\\u([0-9a-f]{4})/', '&#x$1;',
preg_replace('^/"(.*)"$/', '$1', json_encode($s)));这利用了这样一个事实,即json_encode将巧合地为您完成转换;其余的都是机械师。(我想这是PHP给你的。)
您的“奖励问题”并不是真正的问题,但当然,它是如何工作的;128-255范围内的原始字节很少是有效的UTF-8序列,所以除非页面上的内容是有效的UTF-8,否则很可能会得到这些字节的“无效字符”替换符号。
作为记录,如果你在æ ¼æ‹‰ 代码页1252中错误地显示了你的文本中的前两种汉字符号,UTF-8将显示为ANSI(你和微软经常不小心地将其称为"ANSI") --如果页面上有这些字节,那么强制浏览器在UTF-8中显示它也应该是一种解决方案。
关于更多的背景,我推荐@deceze的每个程序员绝对、积极地需要了解编码和字符集才能处理文本。。
https://stackoverflow.com/questions/25513930
复制相似问题