0

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

4

3 回答 3

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
   }
于 2012-06-16T02:54:44.633 回答
0

试试这个..

php 中定义的标头内容类型

 header("content-type: text/html; charset=utf-8");

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

于 2012-06-16T05:15:47.853 回答
0

您可以在回显之前将特殊字符转换为 HTML 实体:

htmlentities($mytext);

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

  1. HTML 实体占用了几个字节的额外空间
  2. 如果要保存到文本文件,则 HTML 实体将不会转换回正确的字符。

它可能并不理想,但它应该可以完成这项工作。

于 2012-06-17T10:33:07.230 回答