0

我想要做的是将来自 mysql 数据库的数据显示到表单内部。我通过对检索数据的数据库管理器的 ajax 调用获取数据。

  • 第一:继承人我的页面的元标记:

    <meta http-equiv="Content-type" content="text/html; charset=utf-8" />

  • 第二:我尝试将 ajax 调用中的编码指定为(我使用 jquery)也尝试使用 utf8 作为 scriptCharset 和内容类型字符集:

    ` $('.btn-group#couleur > button').click(function(){
          $.ajaxSetup({
             async:false,
             scriptCharset: "iso-8859-1",
            contentType:"application/json; charset=iso-8859-1"
          });`
    </li>
    

  • 第三:我的表是用以下 SQL 编码构建的,其他表可以正常工作:`

    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 ;
    `
    

  • Final :这是生成的 html:

    `<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>`
    

  • 任何猜测我可能做错了什么?

    4

    3 回答 3

    1

    您来自数据库的编码与 HTML 输出不匹配:您告诉浏览器您编写 UTF-8,但从数据库中获取 latin1/iso-8859-1 并将其直接写入您的 <option> 字段。不行啊

    您必须使用像 iconv() 这样的转换函数,这可能在从数据库中获取数据并将其推送到 Ajax 调用的函数中做得最好。由于您没有说出语言是什么,因此您必须自己查找。

    注意:为您的 Ajax 调用指定contentType:"application/json; charset=utf-8"不会自动转换编码,除非您有一个非常智能的 Ajax 调用...

    于 2013-01-13T20:31:18.407 回答
    0

    事实证明,真正的罪魁祸首是从我的 ajax 调用中检索 json 数组时。json 被转储在没有指定任何字符集的空白页面中,默认为 utf8。

    我添加了一个标头,以及一些额外的解析来过滤 json,并且我的 json 具有正确的编码。我需要将其设置为 iso-8859-1

    于 2013-01-17T13:25:18.247 回答
    -1

    做 JvO 所说的或utf8_decode('your weird chars')。不要两者都做!

    于 2013-01-13T20:33:58.433 回答