MySQL获取Unicode文本(印地语)到记录集/文件的PHP CodeIgniter代码

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

在phpmyadmin中运行“show session variables;”以查看其有效配置。不要使用mysql_函数,它们已被弃用,请改用mysqli或pdo。 - jkavalik
我已经尝试过...也尝试了mysqli,但都没有起作用... - Semy Tech
2个回答

0

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

因此,可能你从数据库中获取了正确的UTF-8编码字符串,但在处理后可能做错了什么。


0

你遇到了乱码问题。

  • 客户端中的字节已经正确编码为utf8(很好)。
  • 你使用了SET NAMES latin1(或者set_charset('latin1')等),可能是默认设置。(应该使用utf8)。
  • 表格中的列可能有可能没有使用CHARACTER SET utf8,但是应该使用这个设置。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接