Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/260.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.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
Php 字符集编码问题_Php_Mysql - Fatal编程技术网

Php 字符集编码问题

Php 字符集编码问题,php,mysql,Php,Mysql,我正在开发一个阿拉伯语网站。但是,我使用AJAX在数据库中保存一些文本。AJAX对我来说很好。我的问题是,当我将数据保存在数据库中并尝试在屏幕上打印时,它会返回一个奇怪的文本。我使用PHP函数mb_detect_encoding来确定数据库如何处理文本。函数返回UTF-8。 所以我使用iconv(“windows-1256”,“UTF-8”,“$row[“text”])在屏幕上打印文本,但它仍然返回这个奇怪的东西。请帮忙 谢谢我建议将您的网页更改为UTF-8。请查看该线程(并在首先发布问题之前使

我正在开发一个阿拉伯语网站。但是,我使用AJAX在数据库中保存一些文本。AJAX对我来说很好。我的问题是,当我将数据保存在数据库中并尝试在屏幕上打印时,它会返回一个奇怪的文本。我使用PHP函数mb_detect_encoding来确定数据库如何处理文本。函数返回UTF-8。 所以我使用iconv(“windows-1256”,“UTF-8”,“$row[“text”])在屏幕上打印文本,但它仍然返回这个奇怪的东西。请帮忙
谢谢

我建议将您的网页更改为UTF-8。

请查看该线程(并在首先发布问题之前使用搜索)

在您的例子中,我认为您忘记了为数据库连接设置chorect字符集(使用
set NAMES
语句或)-但这很难说

这是一段引用,他在喜欢的帖子中给出了一个完美的答案,列出了你需要注意的所有要点:

存储:

  • 指定
    utf8\u unicode\u ci
    (或 等价)所有表的排序规则 和数据库中的文本列。 这使得MySQL在物理上存储 在UTF-8中本机检索值
检索:

  • 在PHP中,在任何数据库包装器中 如果使用,则需要设置连接 字符集为utf8。通过这种方式,MySQL做到了 未从其本机UTF-8进行转换 当它将数据交给PHP时。 * 请注意,如果不使用DB 包装器,您可能必须发出 一个告诉MySQL给你的查询 UTF-8中的结果:
    设置名称“utf8”
    (只要你接通)
交付:

  • 您必须告诉PHP交付 向客户端发送正确的头,因此 文本将被解释为UTF-8。在里面 在PHP中,您可以使用
    default\u字符集
    php.ini选项,或手动发出
    内容类型
    标题,其中 只是更多的工作,但有相同的 效果
提交:

  • 您希望所有数据通过发送给您 浏览器应为UTF-8格式。 不幸的是,只有这样 可靠地做到这一点是添加
    将字符集接受为所有
    
    标签:
  • 注 W3CHTML规范说 客户端“应该”默认为发送 表单以任何形式返回到服务器 服务器提供的字符集,但这是 显然只是一个建议, 因此,有必要明确说明 每一个
    标签
  • 虽然,在这方面,你仍然 要验证每个提交的字符串吗 作为有效的UTF-8,然后再尝试 在任何地方储存或使用。PHP的
    mb\u check\u encoding()
    起作用, 但你必须虔诚地使用它
处理:

  • 不幸的是,这是最困难的 部分你需要确保 每次处理UTF-8字符串时, 你这样做很安全。最简单的方法 这是通过广泛使用 PHP的
    mbstring
    扩展名
  • PHP的 默认情况下不支持字符串操作 UTF-8安全。有一些事情是你想要的 可以安全地使用普通PHP字符串 操作(如串联),但 对于大多数事情,你应该使用 等效的
    mbstring
    函数
  • 到 知道你在做什么(阅读:不要乱 你真的需要知道UTF-8 以及它是如何在最低温度下工作的 可能的水平。查看任何 链接从一些好的 学习所需一切的资源 知道
  • 还有,我觉得是这样的 应该在某个地方说,即使 这似乎很明显:每个PHP或HTML 您将要提供的文件应该是 以有效的UTF-8编码

请注意,您不需要使用utf-8-重要的部分是在任何地方都使用相同的字符集,而与可能的字符集无关。但是如果您仍然需要更改内容,请使用utf-8。

理想情况下,您应该在网页、数据库和JavaScript/AJAX中使用相同的编码(utf-8?)。很多人忘了为AJAX请求/响应设置字符集,这会在某些浏览器中导致数据损坏(咳嗽)。

谢谢大家的支持,oezi对此表示抱歉。我真的搜索了一下,没有找到我的答案。不过,我现在觉得它很好用。我将解释我是如何使它工作的,这样其他任何人都可以从中受益: -我将我的表格字符设置为utf8\uUnicode\uCI。 -为了提交数据,我使用了带有默认字符集UTF-8的AJAX。 -当我从数据库中获取数据时,我使用iconv函数作为以下函数 iconv(“UTF-8”,“windows-1256”,“$row[“text”]),它可以工作 我希望这是清楚的