2011-12-01 24 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

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