如何使用PHP处理稀有字符?

时间:2012-06-16 01:47:26

标签: php html

我接受用户将文本输入textarea,然后保存(它保存在一个简单的.txt文件中,并且还包含html)。然后使用file_get_contents()抓取文本文件,然后进行回显。这工作正常,除非我用稀有字符测试它。例如,当我用三叶草(♧)测试它时,它会将它保存到文本文件中,但是当我显示它时,它就像是。几乎所有罕见的符号都以â为前缀。我猜这是一些编码问题,但我不知道从哪里开始。更具体地说,如何确保任何用户输入最终都能正确显示?感谢。

3 个答案:

答案 0 :(得分:0)

如何确保任何用户输入最终都能正确显示?``

仅接受UTF-8编码的字符串

PHP附带了一个名为mb_check_encoding的便捷函数 - 检查字符串是否对指定的编码有效 使用此功能检查用户输入是否不是“稀有”

   if(mb_check_encoding($string, 'UTF-8'))
   {
       // do stuff, input is UTF-8
   }
   else 
   {
        // input is not UTF-8
   }

答案 1 :(得分:0)

试试这个..

在php

中定义的标题内容类型
 header("content-type: text/html; charset=utf-8");

http://hiox.org/33451-non-standard-characters-handle-in-php.php

答案 2 :(得分:0)

您可以在回复它之前将特殊字符转换为HTML entites:

htmlentities($mytext);

然后浏览器会将它们转换回另一端的正确字符。有两个小缺点:

  1. HTML实体占用了几个字节的额外空间
  2. 如果要保存到文本文件,则HTML实体将不会转换回正确的字符。
  3. 这可能不太理想,但应该可以胜任。