加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

发布时间:2020-12-13 17:41:10 所属栏目:PHP教程 来源:网络整理
导读:经过大约二十几个帖子后,我才被正式难倒.我有一个包含utf8_general_ci整理列的数据库.使用 PHPMyAdmin我能够正确地查看表中的UTF-8数据(至少据我所知.)我认为我想做的事情很简单.我以多种方式查询数据,我只想回显utf-8值: echo bin2hex("more…"); //note "
经过大约二十几个帖子后,我才被正式难倒.我有一个包含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->值,我得到:

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读