欧元符号显示为\ u00e2 \ u00ac \ u00ac和â€

时间:2017-02-28 13:27:28

标签: php jquery mysql json utf-8

我知道有很多关于这个问题的话题,但是我花了最后几个小时尝试各种方法,我无法接近解决方案。所以这就是......

这是我的jquery:

copyresult

这是我的php(app_json_f.php页面):

$.post('inc/app_json_f.php',{params:priv_params}, function (data) {
  console.log(data);
  // displays: \u00e2\u0082\u00ac instead of €
  data = JSON.parse(data);
  console.log(data);
  // displays: â¬â¬ instead of €
}

f_utf8_json函数将检查$ data并使用utf8_encode()转换每个值。

此时,echo json_encode(...)将在控制台中显示以下内容:

\ u00e2 \ u0082 \ u00ac

我希望看到€符号。

数据来自MySQL数据库,其中包含整理utf8_general_ci。 PHP的字符集是UTF-8。

有什么建议吗?

3 个答案:

答案 0 :(得分:0)

对于使用curl发送文件,您需要使用此工作代码。

if(!empty($postfields['image'])){
$file_name_with_full_path = $postfields['image'];
  if (function_exists('curl_file_create')) { // php 5.6+
    $cFile = curl_file_create($file_name_with_full_path);
  } else { // 
    $cFile = '@' . realpath($file_name_with_full_path);
  }
  $postfields['fileToUpload'] =  $cFile;

}

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_POST,1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postfields);
$result=curl_exec ($ch);
curl_close ($ch);

用户curl_file_create

答案 1 :(得分:0)

使用JSON_UNESCAPED_UNICODE时,请将\u0123作为第二个参数,这样您就不会获得类型代码,而是获得UTF-8。

E2ACE2AC的UTF-8编码的十六进制为utf8。 (同样适用于MySQL' utf8mb4€。)

如果你得到UNHEX(E2ACE2AC),那么你就有了#34; Mojibake"。

如果您使用â¬â¬并将其视为cp1250,cp1256,cp1257,latin1,latin5,latin7中的任何一项,则会获得MediaPlayer mp = MediaPlayer.create(this,Uri.parse("android.resource://app/raw/sound")); mp.preapare(); mp.setOnCompletionListener(new OnCompletionListener() { @Override public void onCompletion(MediaPlayer mp) { mp.release(); } }); mp.start(); 。听起来你正在复杂化错误。

查看"最佳做法"和其他调试技巧: Trouble with utf8 characters; what I see is not what I stored

答案 2 :(得分:0)

通过删除f_utf8_json函数(使用utf8_encode()将值转换为utf8的函数),一切正常。奇怪,因为我在项目的早期添加了这个功能,因为有必要得到正确的结果。我必须仔细检查,但可能是另一个数据库设置是原因。

问题解决了。