Mysql获取unicode文本(hindi)来记录集/文件php codeigniter

时间:2015-10-27 19:57:01

标签: php mysql csv unicode

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"); 

2 个答案:

答案 0 :(得分:0)

सवार这样的字符串是将UTF-8字符串编码为UTF-8,然后使用8位代码页对其进行解码的结果。您可以通过每2或3个字符重复出现字符模式(à¤)。

所以你可能从数据库中获取了正确的字符串,编码为UTF-8,但之后处理它时你做错了。

答案 1 :(得分:0)

你有Mojibake。

  • 客户端中的字节在utf8(正常)中正确编码。
  • 您可能默认与self.assertEqual(food_text, u'Blueberry Pancakes Are Bomb') (或SET NAMES latin1或...)相关联。 (应该是set_charset('latin1')。)
  • 表格中的列可能是utf8,也可能不是CHARACTER SET utf8,但应该是这样。