脚本宝典收集整理的这篇文章主要介绍了使用PHP从MySQL获取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');
首先确保您的数据库已正确设置,这意味着所有内容都使用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应该运作良好.
以上是脚本宝典为你收集整理的使用PHP从MySQL获取UTF-8字符串全部内容,希望文章能够帮你解决使用PHP从MySQL获取UTF-8字符串所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。