我用CakePHP編寫了一個應用程序。 我設置所有使用UTF-8編碼(數據庫表,database.php中的數據庫連接等),現在我想知道在發送之前是否應該將每個文本字符串編碼爲UTF-8(使用utf8_encode
)它到數據庫或它是沒有必要的。CakePHP UTF-8需要直接編碼嗎?
謝謝。
我用CakePHP編寫了一個應用程序。 我設置所有使用UTF-8編碼(數據庫表,database.php中的數據庫連接等),現在我想知道在發送之前是否應該將每個文本字符串編碼爲UTF-8(使用utf8_encode
)它到數據庫或它是沒有必要的。CakePHP UTF-8需要直接編碼嗎?
謝謝。
這沒有必要。
指定與utf8的數據庫連接將爲您處理複雜問題。 (查看評論)
請在the manual看看utf8_encode
實際上做了什麼。它將 ISO-8859-1編碼文本轉換爲UTF-8編碼文本。是的,這個功能是一個可怕的名字。如果您的文本未在ISO-8859-1中編碼,則不需要此功能。如果你的文本已經在UTF-8中,你不需要這個功能。簡而言之,如果你從一開始就將所有東西都設置爲UTF-8,那麼它已經是UTF-8了,你不需要做其他任何事情。
它應該是連接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'
讓我知道你是否可以解決問題。 謝謝
這一切都已經確定。這不是我的問題。 ;) – entropid
然後不需要做任何事情。 –
這沒有必要。 –
@MozMorris謝謝,但爲什麼? MySQL會自動執行它嗎? – entropid
不自動。但是通過指定數據庫和連接爲utf8,你將是安全的。 –