我要做的是将来自mysql数据库的数据显示在表单内部。我通过对我的数据库管理器的ajax调用获取数据,该管理器检索数据。
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
` $('.btn-group#couleur > button').click(function(){
$.ajaxSetup({
async:false,
scriptCharset: "iso-8859-1",
contentType:"application/json; charset=iso-8859-1"
});`
</li>
CREATE TABLE IF NOT EXISTS `pays` (
`id` smallint(5) unsigned NOT NULL AUTO_INCREMENT,
`pays` varchar(30) COLLATE latin1_general_ci NOT NULL,
PRIMARY KEY (`id`)
) DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci ;
`
`<select class="span8" name="pays">
<option value="11">Chili</option>
<option value="5">Espagne</option>
<option value="4">�tats-Unis</option>
<option value="2">France</option>
<option value="3">Gr�ce</option>
<option value="6">Italie</option>
<option value="9">Nouvelle-Z�lande</option>
<option value="7">Portugal</option>
</select>`
答案 0 :(得分:1)
您从数据库和HTML输出的编码不匹配:您告诉浏览器您编写UTF-8但从数据库中获取latin1 / iso-8859-1并将其直接写入&lt; option&gt;的字段。不会工作。
你必须使用像iconv()这样的转换函数,这在从数据库中提取数据并将其推送到Ajax调用的函数中可能做得最好。由于你没有说出这种语言是什么,你必须自己查看。
注意:为您的Ajax调用指定 contentType:“application / json; charset = utf-8”将不会自动转换编码,除非您有一个非常智能的Ajax调用...
答案 1 :(得分:0)
事实证明,真正的罪魁祸首是从我的ajax调用中检索json数组时。 json被丢弃在一个没有指定任何字符集的空白页面中,它默认为utf8。
我添加了一个标题,加上一些额外的解析来过滤json,并且我的json具有正确的编码。我需要将它设置为iso-8859-1但
答案 2 :(得分:-1)
做JvO所说的或utf8_decode('your weird chars')
。不要两个都做!