Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unicode字符串php_Php_String_Unicode_Echo - Fatal编程技术网

Unicode字符串php

Unicode字符串php,php,string,unicode,echo,Php,String,Unicode,Echo,我有个问题! 我想用php打印一个unicode字符串(比如“سلام”)! 但是当我使用echo的时候只有一些???阿佩尔 我该怎么办??? 当我想选择从数据库中检索到的字符串时,就会发生这种情况 echo 'سلام'; 结果是: ???? 我试着使用header函数,但没有帮到我 您需要在HTTP响应中声明使用的字符编码。您可以使用: 这样,输出被声明为带有字符编码UTF-8的HTML。请注意,如果已经将数据发送到客户端而未对其进行缓冲,则不能使用标题。因此,可以使用缓冲区来缓冲输出,

我有个问题! 我想用php打印一个unicode字符串(比如“سلام”)! 但是当我使用echo的时候只有一些???阿佩尔

我该怎么办??? 当我想选择从数据库中检索到的字符串时,就会发生这种情况

echo 'سلام';
结果是:

????

我试着使用header函数,但没有帮到我

您需要在HTTP响应中声明使用的字符编码。您可以使用:


这样,输出被声明为带有字符编码UTF-8的HTML。请注意,如果已经将数据发送到客户端而未对其进行缓冲,则不能使用
标题。因此,可以使用缓冲区来缓冲输出,以便您可以修改标题,尽管已经有一些输出,或者在任何输出之前使用
标题。

您需要做三件事:

  • 确保您接收的数据是UTF-8数据。对于MySQL,在选择记录之前查询
    设置名称“utf8”
  • 在处理UTF-8字符串时,请确保使用与UTF-8兼容的函数
  • 确保将输出编码设置为UTF-8。对于HTML,这可以通过将
    内容类型
    HTTP头设置为(例如
    text/HTML)来实现;字符集=utf-8

  • 当然,用支持所需字符的任何编码替换“UTF-8”。无需更改数据库表(除了可能的性能提升)。您可能需要更改HTML模板等。如果您决定使用UTF-16或其他(大部分)与ASCII不兼容的东西。

    也许我有点晚了,但这对我来说很有效:

    echo utf8_encode('سلام');
    

    你指定了正确的字符编码吗?不知道为什么会被否决,这个问题完全正确。我最终找到的解决方案是:如果计划在mysql中存储unicode数据,则需要使用支持它的字符集。默认情况下,Mysql使用latin1,但您可以切换到utf-8。@Troleskn,我假设数据已经正确存储。我提到更改数据库表是因为,比如说,如果站点切换到UTF-16,则不需要更改数据库数据的字符集,因为转换是为您进行的。
    echo utf8_encode('سلام');