使用ajax + jquery发布基于非拉丁语言不会将正确的文本保存到mysql。
我所做的是:
任何建议表示赞赏。
我正在使用以下jquery代码:
我能够看到发送到save_translation.php页面的翻译文本
var d = {"english":"<?php echo $w;?>","addwords":translated};
data = jQuery.param(d);
$.ajax({
type:"POST",
data:data,
url:"save_translation.php"
});
每个字段都设置为utf8_general_ci
Ajax帖子
英语:谢谢 addwords:baie dankie | falemnderit |شكرا|дзякуй|благодаря|gràcies|谢谢|谢谢|谢谢| hvala vam |děkuji| tak | dank u |谢谢|tänanteid| salamat | kiitos | merci | grazas | Danke |σαςευχαριστώ| תודה|धन्यवाद|köszönöm|þakkaþér| terima kasih | go raibh maith agat | grazie |ありがとう|감사합니다| paldies |ačiū|Виблагодарам| terima kasih | nirringrazzjak | takk skal du ha |تشکرازشما|dziękuję| obrigado |mulţumesc |спасибо|хвала|ďakujem| hvala | gracias | asante | tack | salamat |คุณขอบคุณ|teşekkürederim|спасибі|cảmơnbạn| ddiolch'ch |אַדאַנק
服务器端输出
英语:谢谢你
baie dankie | falemnderit |شكرا| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | धन्यवाद|köszönöm|þakka疗法| terima kasih |去raibh maith阿加特|古拉爵|ありがとう|감사합니다| paldies |阿丘|Виблагодарам| terima kasih | nirringrazzjak | TAKK斯考尔杜厦|تشکرازشما|dziękuję| obrigado |mulţumesc|спасибо |хвала|ďakujem| hvala | gracias | asante | tack | salamat |คุณขอบคุณ|teşekkürederim|спасибі|cảmơnbạn| ddiolch'ch |אַדאַנק|
每个字段都设置为utf8_general_ci
phpMyAdmin的
谢谢| baie dankie | falemnderit |Ø'كرا|Ð'зÑкуй|благоÐ'аÑ|Ñ|grÃ|cè|è°è°¢|è° ¢°¢| |è¬è¬| hvala vam |dÄ> kuji | tak | dank u |谢谢|tönanteid| salamat | kiitos | merci | grazas | Danke |σαÏ,ÎμÏ...χÎα ÏιÏÏÏ“ÏŽ|תוהד|धनà¥à¤¯à¤μाà¤| |köszönöm|þakkaþér | terima kasih | go raibh maith agat | grazie |ã,ã,ŠãŒã¨ã†|ê°ì,¬í•©ë<¤| paldies |aÄiÅ«|Ð'иблагоÐ'арР°Ð¼| terima kasih | nirringrazzjak | takk skal du ha |تØ'کرازØ'Ù...ا|dziÄ™kujÄ™| obrigado |mulÅ£umesc |ÑпаÑибо| Ñ...вала| akuakujem | hvala | gracias | asante | tack | salamat |ณุดà¸,à¸à¸šà¸“à¸¸à”“|teÅŸekkürederim| ÑпаÑибÑ-|cảơbạn| ddiolch'ch |×ַד×Ö·×ק
答案 0 :(得分:1)
使用JavaScript函数encodeURIComponent
可能就足够了。
如果您没有向myUrl + '?param1=' + param1 + '¶m2' + param2
这样的网址添加参数手册,但是使用构造myUrl + '?' + jQuery.param({param1:param1, param2:param2})
,那么关于函数函数encodeURIComponent
的编码将为您创建jQuery。在所有'&amp;'的情况下还将添加字符和'paramX ='字符串。
但是使用data
方法的jQuery.ajax
参数的最佳方法。如果你使用
jQuery.ajax({
url: myUrl,
data: {param1:param1, param2:param2},
//...
});
然后,您的网址将附加'?param1=' + param1 + '¶m2' + param2
,其中相应的编码已填满jQuery
。
如果我的提示无法帮助您,请发布您的代码示例。
更新:发布测试数据后很明显,您对ajax
请求没有任何问题。您显示服务器的数据看起来绝对正确。所以你的问题介于PHP和MYSQL之间。我和这两种产品都没有合作,现在可以帮到你了。可能来自以下链接的信息可以帮助您string issue of utf-8 encoding with PHP and MySQL?。你也可以尝试
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET 'utf8'");
祝你成功并迅速解决问题。 此致
P.S。在ajax
请求中,您可以直接使用data: {"english":"<?php echo $w;?>","addwords":translated}
。调用jQuery.param将为您生成jQquery,因为data
的类型不是字符串。但它完全独立于你的问题。