gpt4 book ai didi

php - 奇怪的 MySQL 编码问题

转载 作者:行者123 更新时间:2023-11-29 14:55:13 24 4
gpt4 key购买 nike

我的页面表中有一个包含阿拉伯语数据的列。

如果我这样做...

@mysql_query( "select title from pages where web_id = '$id'" );

我得到了正确的阿拉伯语数据。

但是如果我再次调用同一个函数,实际上它处于循环中,第二次它会给我带来垃圾数据。看起来像这样

"تنظيم الأوقا٠العامة اقرأ قطاع

此外,如果在该查询之前,我执行以下操作之一:

@mysql_query("SET NAMES 'utf8'");
@mysql_set_charset( 'utf8' );
mysql_query("SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'" );

我总是得到垃圾数据,即使是在第一次调用时也是如此。这里发生了什么?

请注意,数据库、表和字段排序规则均设置为 utf8_bin

最佳答案

一些随机提示:

尽量不要使用@运算符。它将抑制任何错误消息。

您需要正确转义输入参数:

mysql_query("SELECT title FROM pages WHERE web_id = '" . mysql_real_escape_string($id) . "'");

您需要检查mysql_query()的返回值:

$res = mysql_query("SELECT title FROM pages WHERE web_id = '" . mysql_real_escape_string($id) . "'");
if(!$res){
die('Could not fetch page title'); // See mysql_error() for error message
}

确保您的 PHP 源代码保存为 UTF-8。任何像样的编辑器都允许您另存为 UTF-8 并在状态栏中显示当前编码。

检查您的表定义。 MySQL 允许设置每个表和列的编码。

使用mysql_set_charset()设置连接编码。

确保浏览器将您的页面呈现为 UTF-8。在 PHP 中,您可以使用以下命令生成适当的 HTTP header :

header('Content-Type: text/html; charset=utf-8');

关于php - 奇怪的 MySQL 编码问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4792135/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com