我知道有很多关于这个问题的话题,但是我花了最后几个小时尝试各种方法,我无法接近解决方案。所以这就是......
这是我的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。
有什么建议吗?
答案 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的函数),一切正常。奇怪,因为我在项目的早期添加了这个功能,因为有必要得到正确的结果。我必须仔细检查,但可能是另一个数据库设置是原因。
问题解决了。