2012-10-24 16 views
1

我在客戶數據庫這個詞(在相同的情況下,更多的40):轉換不同的編碼字符集爲UTF-8

  1. Aclimação
  2. Aclima&ccedilão

我既需要轉換爲UTF -8並保存在MySQL數據庫中:Aclimação。

我該怎麼用PHP?

[編輯]
觀察:
我需要做,因爲,當用戶找到特定的 '區',兩種格式的無法轉換,例如:

  1. Aclimaç&aatilde;o (correct)
  2. Aclimação (incorrect: utf8 + html number encode)
  3. Aclima&ccedilão (incorrect: iso + html number encode)

我只需要1種編碼,在我的情況下:ISO-8859-1。

+0

在數據庫整理中將編碼類型設置爲UTF8'utf8_general_ci'。 –

+0

我不能那樣做,因爲數據庫中的所有單詞都是ISO-8859-1。我需要轉換這個詞,因爲有兩種類型的轉換(&#227而不是&aatilde),並且很難找到。 –

+0

通常'html_entity_decode()'會做。但是,這看起來是一個半碼的編碼。所以你可能需要一個定製的替換映射和函數和/或正則表達式。 – mario

回答

2

如何做了以下的解決方案,轉換數據庫中的所有數據,使用功能:

mb_convert_encoding (data, 'UTF-8', 'HTML-ENTITIES'); 

當我讀了記錄,做到以下幾點:

utf8_decode (data) 

當我尋找一些記錄,根據選址(),我做了以下工作:

utf8_encode (data) 

到目前爲止,工作pe rfectly。

1

html_entity_decode()應用於字符串後,獲取值並將其插入數據庫。

(您提供外觀的第二個字符串像它有一個畸形的HTML實體,是嗎?)

+0

是的,但是,這是我的客戶的數據庫,我需要轉換爲'正確的格式'。怎麼樣?當然,我不知道...我正在測試很多功能...... –

+0

@PatrickMaciel如果它是一張表,或只是一對夫婦,您可以選擇所有的字段,並用合適的字符串傳回來更新它們通過適當的過濾器。並確保您的表格整理是utf8 _ * _ *。或者你可以使用eis的程序。 – Mario

1
  1. 轉儲數據庫內容在那裏使用mysqldump
  2. 的iconv的數據UTF8的
  3. 字符串替換您的格式錯誤的html實體有效
  4. 使用html_entity_decode將有效的html實體更改爲它們應該是的字符。注意你應該給它編碼(UTF-8)作爲參數,否則它將取決於PHP版本!
  5. 創建新的UTF-8數據庫到MySQL
  6. 將數據導入到mysql

我不認爲在ISO-8859-1存在示例的,所以你就真的需要UTF-8它。將它作爲&aatilde;即HTML表示它的方式是不正確的。

+0

我會測試一下。 –