gpt4 book ai didi

php - 使用 PHP 从 MySQL 获取 UTF-8 字符串

转载 作者:可可西里 更新时间:2023-11-01 07:23:24 26 4
gpt4 key购买 nike

在浏览了大约两打帖子后,我正式被难住了。我有一个带有 utf8_general_ci 整理列的数据库。使用 PHPMyAdmin,我能够正确查看表中的 UTF-8 数据(至少据我所知。)我认为我想做的事情很简单。我通过多种方式查询了数据,我只想回显utf-8值:

echo bin2hex("more…"); //note "…" is a special character
6d 6f 72 65 e2 80 a6 (Hex Value)

但是如果我只是回显 $row->value 我得到:

6d 6f 72 65 85

它给出的 UTF-8 编码:

6d 6f 72 65 c2 85

我读过的大多数帖子都说使用 mysql_set_charset("utf8") 但这真的把事情搞砸了:

6d 6f 72 65 26 61 63 69 72 63 3b 80 26 62 72 76 62 61 72 3b

最后使用 mysql_set_charset("utf8") & utf8_encode($var):

6d 6f 72 65 26 61 63 69 72 63 3b c2 80 26 62 72 76 62 61 72 3b

我也试过在 PHP 中设置 UTF8 设置。 Godaddy 使这变得有点困难,所以我已经使用 ini_set 完成了。但是 mbstring.encoding_translation 不会打开。

// UTF8 settings
ini_set('mbstring.language', 'Neutral');
ini_set('mbstring.internal_encoding', 'UTF-8');
ini_set('mbstring.http_input', 'UTF-8');
ini_set('mbstring.http_output', 'UTF-8');
ini_set('mbstring.encoding_translation', 'On');
ini_set('mbstring.detect_order', 'auto');
ini_set('mbstring.substitute_character', 'long');

关于我需要做什么的任何提示?

最佳答案

我敢打赌,您的实际数据可能会使用 utf8 以外的其他方式存储。

首先确保您的数据库设置正确,这意味着所有内容都真正以 UTF-8 编码存储。

这是我在遇到类似问题时所做的:

始终在干净的表中进行测试,这意味着您应该为测试目的创建新的数据库和表,并从一开始就确保实际存储在数据库中的所有数据确实是 utf8 编码的。

确保数据库编码为utf8:

CREATE DATABASE `test` CHARACTER SET `utf8` COLLATE `utf8_general_ci`; 

确保包含文本的字段使用 utf8 编码:

CREATE TABLE `test` \
(`id` INT AUTO_INCREMENT PRIMARY KEY, \
`name` VARCHAR(512) COLLATE `utf8_general_ci`) \
CHARACTER SET `utf8` COLLATE `utf8_general_ci`;

确保用于检索数据的连接返回未修改的 UTF-8 字符串。

$connection = mysql_connect( ... );
// Make sure that connection does not change encoding:
mysql_set_charset('utf8', $connection);
// Insert some test data:
mysql_query("INSERT INTO `test` (`name`) VALUES (`Ab✓cdÄö`)", $connection);

之后尝试阅读它并检查它是否正常工作,如果它正常工作那么你就知道问题是你现有的数据库、表结构或连接中的某些东西是错误的并且应该与我们刚刚设置的类似在我们的测试环境中。

如果您使用的是 phpmyadmin,只需将所有内容设置为 utf8 并选择合适的 utf8 排序规则,该排序规则在每一点都相同。然后尝试使用 phpmyadmin 将一些数据添加到表中,并尝试使用您的 php 应用程序读取它。utf8_general_ci 应该运行良好。

这里有一些信息: MySQL Connection Character Sets and Collations

关于php - 使用 PHP 从 MySQL 获取 UTF-8 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10099011/

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