Problem: Not getting unicode (hindi) text in mysql record set/php array
我正在使用mysql数据库,并且我在表unicode的MyText列中具有以下值:
इस परीक्षण के प्रयोजन के लिए हिन्दी पाठ इस प्रकार है|
现在如果我在php myadmin中运行查询:从unicode选择Mytext
我会得到结果 इसपरीक्षणकेप्रयोजन केलिएहिन्दीपाठइ प्रकारहै|
但如果我使用php(或codeigniter)运行相同的查询,我会得到以下结果:
सà¤μारà€àतकपहà¥à¤,ठšà¤¨à¥‡à¤•à¥‡à¤®à¤¿à¤¨à¤Ÿ
My database setting in codeigniter:
$db['default']['username'] = 'root';
$db['default']['password'] = '';
$db['default']['database'] = 'MYDATABASENAME';
$db['default']['dbdriver'] = 'mysql';
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = '';
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;
我在查询之前尝试过:
mysql_set_charset('utf8') or die(mysql_error());
mysql_query('SET character_set_results=utf8') or die(mysql_error());
mysql_query('SET NAMES utf8') or die(mysql_error());
mysql_query('SET character_set_client=utf8') or die(mysql_error());
mysql_query('SET character_set_connection=utf8') or die(mysql_error());
mysql_query('SET character_set_results=utf8') or die(mysql_error());
mysql_query("set names 'utf8'") or die(mysql_error());
mysql_query('SET collation_connection=utf8_general_ci') or die(mysql_error());
mysql_query ("set character_set_results='utf8'");
mysql_query ("set character_set_client='utf8'");
mysql_query ("SET NAMES 'utf8'");
mysql_query ("SET CHARACTER SET");
答案 0 :(得分:0)
像सवार
这样的字符串是将UTF-8字符串编码为UTF-8,然后使用8位代码页对其进行解码的结果。您可以通过每2或3个字符重复出现字符模式(à¤
)。
所以你可能从数据库中获取了正确的字符串,编码为UTF-8,但之后处理它时你做错了。
答案 1 :(得分:0)
你有Mojibake。
self.assertEqual(food_text, u'Blueberry Pancakes Are Bomb')
(或SET NAMES latin1
或...)相关联。 (应该是set_charset('latin1')
。)utf8
,也可能不是CHARACTER SET utf8
,但应该是这样。