我正在尝试使用法语字符。无论出于何种原因,PHP都不会正确输出它们,除非我强制使用ISO-8859-1字符集(我真的不想这样做);它不会让我使用UTF-8。
当我强制使用ISO-8859-1时,执行我的数组的print_r()
会产生以下结果:
Array
(
[0] => stdClass Object
(
[language] => fr
[langselect] => î
[s1next] => Prochain
[hascodespan] => Avez-vous déjà un code d'enregistrement?
[s2prev] => Précédent
[s2next] => Oui, j'ai déjà un code.
[ecodedescription] => Un E-Code vous donne un accès exclusif à des événements vraiment cool. Si vous êtes dans le besoin d'un code, vous pouvez en acheter un dans notre boutique en ligne en visitant ce lien <a href="#"> boutique en ligne</ a>.
[purchase] => Cliquez ici pour acheter en ligne billets
[ecodespan] => S'il vous plaît entrer votre e-code
[ecodelocdescription] => Votre code peut être trouvé ci-dessous le code à barres sur votre billet
[s3prev] => Précédent
[s3next] => Prochain
[validationtext] => Validation E-Code ... Un instant.
)
)
使用UTF-8时,输出如下:
Array
(
[0] => stdClass Object
(
[language] => fr
[langselect] => �
[s1next] => Prochain
[hascodespan] => Avez-vous d�j� un code d'enregistrement?
[s2prev] => Pr�c�dent
[s2next] => Oui, j'ai d�j� un code.
[ecodedescription] => Un E-Code vous donne un acc�s exclusif � des �v�nements vraiment cool. Si vous �tes dans le besoin d'un code, vous pouvez en acheter un dans notre boutique en ligne en visitant ce lien <a href="#"> boutique en ligne</ a>.
[purchase] => Cliquez ici pour acheter en ligne billets
[ecodespan] => S'il vous pla�t entrer votre e-code
[ecodelocdescription] => Votre code peut �tre trouv� ci-dessous le code � barres sur votre billet
[s3prev] => Pr�c�dent
[s3next] => Prochain
[validationtext] => Validation E-Code ... Un instant.
)
)
在这两种情况下,执行json_encode()
都会产生以下结果:
[
{
language: "fr",
langselect: null,
s1next: "Prochain",
hascodespan: null,
s2prev: null,
s2next: null,
ecodedescription: null,
purchase: "Cliquez ici pour acheter en ligne billets",
ecodespan: null,
ecodelocdescription: null,
s3prev: null,
s3next: "Prochain",
validationtext: "Validation E-Code ... Un instant."
}
]
我的数据库设置为UTF-8,但由于某些奇怪的原因,每次插入带有法语字符的内容时,它都会恢复为某些西欧编码。
主要是,我真的需要json_encode()
来返回有效的结果,所以我可以在我的翻译中使用它。我尝试了iconv()
和utf8_encode()
,但无济于事。
任何帮助都非常赞赏。
答案 0 :(得分:4)
除数据库编码外,请务必检查以下内容:
<meta HTTP-EQUIV="content-type" CONTENT="text/html; charset=utf-8">
SET character_set_connection = 'utf8'
ALTER TABLE table CONVERT TO CHARACTER SET utf8;
SET character_set_results = 'utf8'
SET character_set_client = 'utf8'
SET character_set_database = 'utf8'
和SET character_set_server = 'utf8'
charset=utf-8
,因此超编辑或您喜欢的编辑器可以检测到它。 RGDS。
答案 1 :(得分:2)
基本;将.php文件放在最上面的行吗?
标题( “内容类型:文本/ HTML;字符集= UTF8 \ n”); 强>
答案 2 :(得分:2)
我设法搞清楚了。这不是我想要的解决方案,但它确实有效。我不得不调整我的查询看起来像:
CONVERT(CAST(langselect as BINARY) USING latin1) as langselect
答案 3 :(得分:1)
尝试直接在utf8中处理来源。
我遇到了同样的问题,并使用了这个简单的解决方案:当您创建新的PHP或Javascript源文件时,请确保它以utf8编码。 我使用Ultra Edit,并选择“UTF8 no bom”选项。这个简单的步骤解决了编码字符的所有问题。
所有现代浏览器都支持utf8,因此请使用此编码您的网页。为了兼容性,如果所有源文件也都在utf8中,则更简单。
遵循网络标准。
答案 4 :(得分:0)
我遇到了同样的问题,但我建议:
$array = htmlentities($array);
$json = json_encode($array);