2012-11-22 50 views

回答

10

有你需要考虑几件事情:

  1. 检查在数据库中的数据被存储为UTF-8
  2. 检查客户端连接到数据库是UTF-8(用于例如,在mysql中看到:http://www.php.net/manual/en/mysqli.character-set-name.php
  3. 确保页面的内容类型设置为UTF-8 [你可以使用header('Content-Type:utf-8'); ]
  4. 尝试设置内部编码,使用mb_internal_encoding(“UTF-8”);

心连心

+0

+1提及数据库编码和' mb_internal_encoding' –

+0

......正如在其他两个答案中提到的,您应该使用'mb_substr' –

+0

mb_internal_encoding(“UTF-8”); - 工作正常!谢谢! –

21
$first_char = mb_substr($title, 0, 1); 

您需要使用PHP的多字节字符串函数正确处理Unicode字符串:

http://www.php.net/manual/en/ref.mbstring.php

http://www.php.net/manual/en/function.mb-substr.php

您还需要指定的<head>的字符编码您HTML:

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 

或:

<meta http-equiv="Content-Type" content="text/html; charset=UTF-16" /> 
+2

回声mb_substr($标题,0,1); 结果: –

+0

mb_substr不起作用 –

+0

你可以在这里发布完整的字符串吗? –

4

PHP字符串不明白默认字节字符串,像索引数组将印章的第一个字节,如果这种情况发生不是在你得到这个结果ASCII范围。使用mb_substr方法。

8

正如先前在其他问题中提到,使用PHP,试图获取子的时候,它不理解多字节字符(如你用UTF8例如获得)。

什么其他的答案不提的是,你应该提示你想使用的mb_substr

因此,编码,例如,我用这个:

mb_substr("Sunday", 0, 1,'UTF8'); // Returns S 
mb_substr("воскресенье", 0, 1,'UTF8'); // Returns в 
+0

没有'UTF8'参数没有为我工作。谢谢! – PiTheNumber

相关问题