2015-05-12 146 views
1

我必須在db中保存俄語產品描述。因此,爲了將該字符串轉換爲utf 8,使用下面的代碼,php解碼編碼字符串

$data = 'Это русский'; 
$cData = iconv(mb_detect_encoding($data, mb_detect_order(), true), "UTF-8", $data); 

它工作正常。但是我需要重新獲取這些數據,而且我不知道如何再次解碼。我想下面的一個,但它不工作,

$des = $object->getDescription("ru"); 
$enc = mb_detect_encoding($des, "UTF-8,ISO-8859-1"); 
echo iconv($enc, "UTF-8", $des); 

,我嘗試下面的一個,但沒有工作

utf8_decode ($data); 

任何一個可以告訴我如何解碼呢?

更新:

我想下面一個編碼,

$data = 'Это русский'; 
$cData = htmlentities($data, ENT_COMPAT, 'UTF-8'); 

它的正常工作,但如何解碼呢?

我嘗試下面的一個,但它不工作..

$des = $object->getDescription("ru"); 

echo $cData = htmlentities($des, ENT_COMPAT, 'UTF-8'); 

回答

1

該編碼似乎是Windows-1251。 編碼爲UFT-8使用:

$html_utf8 = mb_convert_encoding($html, "utf-8", "windows-1251"); 

解碼回Windows-1251使用:

$html_1251 = mb_convert_encoding($html, "windows-1251", "utf-8"); 
+0

它不工作.. – Elavarasan

+0

它在我身邊工作,這裏是一個演示; http://codepad.viper-7.com/DuxXsA – maxdaniel98

+0

好的,我會再檢查一次。 – Elavarasan

0

PHP有一個UTF-8解碼功能,utf8_decode()

utf8_decode ($data); 

從手冊:

該函數將假定爲UTF-8編碼的數據解碼爲 ISO-8859-1。

+0

我試過,但沒有運氣 – Elavarasan

0

你的原始編碼是什麼?

在您的解碼示例中,您不會轉換回原始編碼,而是轉換回UTF-8。試試這個:

$original_encoding = '...'; //put your original encoding here 
$description = $object->getDescription("ru"); 
echo iconv('UTF-8', $original_encoding, $description); 
+0

的iconv(mb_detect_encoding($的數據,mb_detect_order(),真) 「UTF-8」,$ data);這是我的編碼方法.. – Elavarasan