2011-12-01 58 views
0

我用CakePHP编写了一个应用程序。 我设置所有使用UTF-8编码(数据库表,database.php中的数据库连接等),现在我想知道在发送之前是否应该将每个文本字符串编码为UTF-8(使用utf8_encode)它到数据库或它是没有必要的。CakePHP UTF-8需要直接编码吗?

谢谢。

+1

这没有必要。 –

+0

@MozMorris谢谢,但为什么? MySQL会自动执行它吗? – entropid

+0

不自动。但是通过指定数据库和连接为utf8,你将是安全的。 –

回答

2

这没有必要。

指定与utf8的数据库连接将为您处理复杂问题。 (查看评论)

1

请在the manual看看utf8_encode实际上做了什么。它 ISO-8859-1编码文本转换为UTF-8编码文本。是的,这个功能是一个可怕的名字。如果您的文本未在ISO-8859-1中编码,则不需要此功能。如果你的文本已经在UTF-8中,你不需要这个功能。简而言之,如果你从一开始就将所有东西都设置为UTF-8,那么它已经是UTF-8了,你不需要做其他任何事情。

+0

那么,如果我从textarea发送一些文本,它是否已经是UTF-8? – entropid

+1

@Entropy如果您的站点指定它使用UTF-8编码,浏览器将发送UTF-8数据回服务器。更明确地说,你可以为表单指定'accept-charset'属性并将其设置为UTF-8。 – deceze

+0

我明白了。谢谢! :) – entropid

1

它应该是连接PHP与MySQL数据库的问题。您可以尝试通过确保您的数据库服务器默认使用utf-8编码连接来解决此问题。

你可以强迫你的CakePHP程序通过指定编码选项连接与UTF8编码到mysql的 app/config/database.php

var $default = array(
    'driver' => 'mysql', 
    'persistent' => false, 
    'host' => 'localhost', 
    'login' => 'root', 
    'password' => '', 
    'database' => 'cakephp', 
    'prefix' => '', 
    'encoding' => 'utf8' 
); 

您还可以强制MySQL使用UTF8与查询:

SET NAMES'utf8'

让我知道你是否可以解决问题。 谢谢

+0

这一切都已经确定。这不是我的问题。 ;) – entropid

+1

然后不需要做任何事情。 –