htmlspecialchars()正在翻译其他特殊字符

Mik*_*ike 1 php input character-encoding special-characters htmlspecialchars

htmlspecialchars()似乎正在将特殊字符转换为以下字符: āķūņūķī到它们各自的实体编号中:

ā ķ ū ņ ū ķ ī

有些仍未翻译,例如:

ZS

我希望htmlspecialchars()(或其他一些功能)翻译这些字母类型的字符......所以它只翻译以下内容(因为它似乎在php.net手册上指出):

  1. ' & '(&符号)变为'&'
  2. ' " '(双引号)变为'"' 当没有设置ENT_NOQUOTES时.
  3. " ' "(单引号)成为''' 仅在设置了ENT_QUOTES时.
  4. ' < '(小于)成为'<'
  5. ' > '(大于)变为'>'

我需要这个的原因是因为在POST请求之后,我正在运行此用户输入,htmlspecialchars()然后将其放回到一组新的html输入中.诸如&,",",<,>之类的字符需要翻译,以免导致显示错误等.但我需要像' āķūņūķī ' 这样的特殊字符保持不变.否则用户会非常困惑.

Wes*_*rch 5

将第三个参数设置为UTF-8:

echo htmlentities('???????', ENT_QUOTES, 'UTF-8');
Run Code Online (Sandbox Code Playgroud)

对于默认的编码htmlspecialcharsISO-8859-1.

测试用例:

var_dump(htmlentities('???????'));
var_dump(htmlentities('???????', ENT_QUOTES, 'UTF-8'));
Run Code Online (Sandbox Code Playgroud)

输出:

string(84) "&Auml;?&Auml;&middot;&Aring;&laquo;&Aring;?&Aring;&laquo;&Auml;&middot;&Auml;&laquo;"
string(14) "???????"
Run Code Online (Sandbox Code Playgroud)

http://codepad.org/MCaDosQ5