2015-05-12 144 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