相关疑难解决方法(0)

示例无效的utf8字符串?

我正在测试我的一些代码如何处理坏数据,我需要一些无效的UTF-8字节序列.

你可以发布一些,理想情况下,解释为什么它们是坏的/你得到它们的地方?

unit-testing utf-8

91
推荐指数
4
解决办法
5万
查看次数

如果页面已经是UTF-8,那么将accept-charset ="UTF-8"添加到HTML表单有什么好处吗?

对于已经指定的页面(通过HTTP标头或元标记),要使用带有UTF-8字符集的Content-Type ...是否有添加accept-charset="UTF-8"到HTML表单的好处?

(我理解的accept-charset属性在IE打破了ISO-8859-1,但我还没有听说过有IE和UTF-8的问题.我只是问,如果有一个好处与UTF-8将它添加到有助于防止输入无效的字节序列.)

html forms encoding utf-8 character-encoding

54
推荐指数
1
解决办法
3万
查看次数

UTF8工作流程PHP,MySQL总结

我正在为拥有非常不同的字母表的国际客户工作,因此我试图最终概述PHP和MySQL之间的完整工作流程,以确保正确插入所有字符编码.我已经阅读了很多这方面的教程,但仍然有问题(有很多东西需要学习),并且我想我可能只是把它们放在一起然后问.

PHP

header('Content-Type:text/html; charset=UTF-8');
mb_internal_encoding('UTF-8');
Run Code Online (Sandbox Code Playgroud)

HTML

<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<form accept-charset="UTF-8"> .. </form>
Run Code Online (Sandbox Code Playgroud)

(虽然后者是可选的,而是一个建议,但我相信我宁愿建议不要做任何事情)

MySQL的

CREATE database_name DEFAULT CHARACTER SET utf8;或者ALTER database_name DEFAULT CHARACTER SET utf8;和/或utf8_general_ci用作MySQL连接整理.

(这里需要注意的是,如果使用varchar,这将增加数据库大小)

连接

mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER_SET utf8");
Run Code Online (Sandbox Code Playgroud)

企业逻辑

检测是否不是UTF8 mb_detect_encoding()并转换为ivon().
验证过长的UTF8和UTF16序列

$body=preg_replace('/[\x00-\x08\x10\x0B\x0C\x0E-\x19\x7F]|(?<=^|[\x00-\x7F])[\x80-\xBF]+|([\xC0\xC1]|[\xF0-\xFF])[\x80-\xBF]*|[\xC2-\xDF]((?![\x80-\xBF])|[\x80-\xBF]{2,})|[\xE0-\xEF](([\x80-\xBF](?![\x80-\xBF]))|(?![\x80-\xBF]{2})|[\x80-\xBF]{3,})/','?',$body);
$body=preg_replace('/\xE0[\x80-\x9F][\x80-\xBF]|\xED[\xA0-\xBF][\x80-\xBF]/S','?', $body);
Run Code Online (Sandbox Code Playgroud)

问题

  • mb_internal_encoding('UTF-8')PHP 5.3及更高版本是必要的,如果是这样,这意味着我必须使用所有多字节函数而不是其核心函数mb_substr()而不是substr()

  • 是否仍然需要检查输入错误的输入,如果是,那么可靠的功能/类是什么?我可能不想删除不良数据并且不太了解音译.

  • 应该真的是utf8_general_ci或者更确切地说utf8_bin

  • 上述工作流程中缺少什么?

来源:

http://coding.smashingmagazine.com/2012/06/06/all-about-unicode-utf8-character-sets/  
http://webcollab.sourceforge.net/unicode.html  
http://stackoverflow.com/a/3742879/1043231  
http://www.adayinthelifeof.nl/2010/12/04/about-using-utf-8-fields-in-mysql/  
http://akrabat.com/php/utf8-php-and-mysql/  
Run Code Online (Sandbox Code Playgroud)

php mysql unicode workflow utf-8

7
推荐指数
1
解决办法
1075
查看次数