Answers
这是你的前台和后台的编码不一致造成的,前台输入的时候就应该进行判断是否让用户输入非法字符。
以下补充内容:
php
<?php /* 仅适用于php文档为ANSI编码 */ /* 关闭页面错误提示,iconv("","UTF-8","办证证")这段代码一旦转入不是UTF-8编码就会错误 */ error_reporting(0); $str = "办证"; //接收来的字符串 //尝试转换编码, $str = iconv('', 'UTF-8', $str); //匹配是否为UTF-8编码 function is_utf8($utf8str) { if (preg_match('/^([' . chr(228) . '-' . chr(233) . ']{1}[' . chr(128) . '-' . chr(191) . ']{1}[' . chr(128) . '-' . chr(191) . ']{1}){1}/', $utf8str) == true || preg_match('/([' . chr(228) . '-' . chr(233) . ']{1}[' . chr(128) . '-' . chr(191) . ']{1}[' . chr(128) . '-' . chr(191) . ']{1}){1}$/', $utf8str) == true || preg_match('/([' . chr(228) . '-' . chr(233) . ']{1}[' . chr(128) . '-' . chr(191) . ']{1}[' . chr(128) . '-' . chr(191) . ']{1}){2,}/', $utf8str) == true) { return true; } else { return false; } } if (is_utf8($str) == 1) { //由于文件是ANSI编码,此处需用UTF8转换,页面才能正常输出 echo iconv('GB2312', 'UTF-8', '匹配正确'); } else { //同上 echo iconv('GB2312', 'UTF-8', '匹配错误'); } ?>
宇宙巡航姬
answered 10 years, 5 months ago