2012-08-25 179 views
0

我有一个PHP/MySQL应用程序,它需要在后台使用UTF-8字符(UTF-8字符不会显示在屏幕上)。 UTF-8字符来自PHP cURL请求。

我需要做些什么才能使PHP和MySQL正常工作,使用UTF-8字符?PHP/Mysql字符集

  1. 我是否需要设置在php.ini default_charset = utf-8?或者这个 只在数据显示在屏幕上时才使用?

  2. 我是否需要为我的数据库,表和列设置字符集/排序规则为utf8/utf8_general_ci?

  3. 我读到,还有一个像MySQL的connection character sets这样的事情。这真的很重要吗?

  4. 还有什么我需要做的吗?

感谢您的帮助。

+0

你有没有尝试过你的任何方法呢? – Charlie

+0

我还不能真正测试外国字符,我只是在准备。 – Hope4You

+1

对于内部处理,[mb_internal_encoding](http://php.net/manual/en/function.mb-internal-encoding.php)会很有用。此外,在获取任何结果之后,您可能希望对数据库执行'SET NAMES'utf8';'查询。 – ACJ

回答

0

您可以使用下面的PHP内置函数ISO字符为utf8字符集

utf8_encode(CHARACTERS); 
1

考虑使用UTF-8的一切,PHP文件中,HTML编码和数据库,它会为你节省很多麻烦。您不需要在编码之间进行转换,您可以使用所有编码的所有可能字符,并且您可以不使用HTML实体。

我收集了一些关于如何使您的网站UTF-8 only的提示。如果你已经有了一个不同编码的数据库,这没有问题,只要告诉连接对象提供UTF-8即可。

$db = new mysqli($dbHost, $dbUser, $dbPassword, $dbName); 
$db->set_charset('utf8'); 
+0

中设置这个值。将数据库声明为utf8还是需要将表和列设置为utf8足够了? – Hope4You

+0

@ Hope4You - 将charset设置为连接对象就足够了,不需要改变数据库本身的任何内容。即使不同的表格应该有不同的编码,连接对象也会将UTF-8传递给你的php脚本。 – martinstoeckli