小编典典

json_encode不会对法语字符进行编码

json

我正在尝试使用法语字符。出于任何原因,除非我强制使用ISO-8859-1字符集(我 实在
不想这样做),否则PHP不会正确输出它们;它不会让我使用UTF-8。

因此print_r(),当我强制执行ISO-8859-1时对数组执行操作会产生以下结果:

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(),但无济于事。

任何帮助将 大大 赞赏。


阅读 342

收藏
2020-07-27

共1个答案

小编典典

我设法弄清楚了。这不是我真正想要的解决方案,但可以。我不得不将查询调整为:

CONVERT(CAST(langselect as BINARY) USING latin1) as langselect
2020-07-27