我正在尝试使用法语字符.无论出于何种原因,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 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 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(),但无济于事.
任何帮助将不胜感激.
解决方法:
请除了数据库编码之外,请务必检查以下内容:
>文件的utf8编码(js / php)
> utf8 html内容:< meta HTTP-EQUIV =“content-type”CONTENT =“text / html; charset = utf-8”>
>你的数据库连接的utf8:SET character_set_connection =’utf8′
>你的mysql表的utf8:ALTER TABLE表CONVERT TO CHARACTER SET utf8;
>查询结果的utf8:SET character_set_results =’utf8′
> db客户端的utf8:SET character_set_client =’utf8′
>您的数据库服务器的utf8:SET character_set_database =’utf8’和SET character_set_server =’utf8′
>在某些情况下,当硬编码值需要编码时,强制将utf8存入文件是必要的.例如,您需要在php / js / xml文件的顶部添加注释,使用charset = utf-8,因此超编辑或您喜欢的编辑器可以检测到它.
RGDS.
标签:php,json,encoding,utf-8
来源: https://codeday.me/bug/20190927/1823945.html