json_encode不会对法语字符进行编码 [英] json_encode won't encode French characters

查看:120
本文介绍了json_encode不会对法语字符进行编码的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试与法国人一起工作。无论什么原因,除非我强制ISO-8859-1字符集(我真的不想做),否则PHP不会正确输出它们;它不会让我使用UTF-8。



所以在我的数组中执行一个 print_r()强制ISO-8859-1产生以下内容:

  Array 

[0] => stdClass对象

[language] => fr
[langselect] =>î
[s1next] => Prochain
[hascodespan] => Avez-vousdéjàun code d'enregistrement?
[s2prev] =>Précédent
[s2next] => Oui,j'aidéjàun code。
[ecodedescription] => Un E-Code vous donne unaccèsexclusiveifàdesévénementsvraiment cool。Si vousêtesdans 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 vousplaîtentrer votre e -code
[ecodelocdescription] => votre code peutêtretrouvéci-dessous le codeàbarres sur votre billet
[s3prev] => Précédent
[s3next] => Prochain
[validationtext] =>验证电子代码...即时。



使用UTF-8时,输出如下:

  Array 

[0] = > stdClass Object

[language] => fr
[langselect] =>
[s1next] => Prochain
[hascodespan] = > Avez-vousd j un code d'enregistrement?
[s2prev] =>Pr c dent
[s2next] => Oui,j'aid j un代码
[ecodedescription] => Un E-Code vous donne unacc sexclusiveif des v nementsvraiment cool。Si vous tesdans 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 vouspla tentrer votre e-code
[ecodelocdescription] => Votre code peut tre trouv ci-dessous le code barres sur votre billet
[s3prev] => Pr c dent
[s3next] => Prochain
[validationtext] =>验证电子代码...即时。



在这两个实例中,执行 json_encode()产生以下结果:

  [
{
语言: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,
验证码:验证电子代码...未即时。
}
]

我的数据库设置为UTF-8由于奇怪的原因,每当我插入任何与法国字符的东西,它恢复了一些西欧的编码。



主要是,我真的需要 json_encode()返回有效的结果,以便我可以在我的翻译中使用它。我试过 iconv() utf8_encode(),但无效。



任何帮助将大大赞赏。

解决方案

我设法出来。这不是我想要的解决方案,但它的工作原理。我不得不调整我的查询看起来像:

  CONVERT(CAST(langselect as BINARY)Using the latin1)as langselect 


I'm trying to work with French characters. For whatever reason, PHP won't output them correctly unless I force the ISO-8859-1 character set (which I really don't want to do); it won't let me use UTF-8.

So doing a print_r() of my array when I force ISO-8859-1 yields the following:

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.
    )

)

When using UTF-8, the output is as following:

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.
    )

)

In both instances, executing a json_encode() yields the following result:

[
    {
        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."
    }
]

I have my database set to UTF-8, yet for some odd reason every time I insert anything with French characters it reverts itself to some Western European encoding.

Mainly, I really need json_encode() to return valid results so I can use it in my translations. I have tried iconv() and utf8_encode(), but to no avail.

Any help would be greatly appreciated.

解决方案

I managed to figure it out. It's not really the solution I wanted but it works. I had to adjust my query to look like:

CONVERT(CAST(langselect as BINARY) USING latin1) as langselect

这篇关于json_encode不会对法语字符进行编码的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆