html中的替换字符来自mysql数据库的数据

时间:2013-01-13 20:21:53

标签: javascript html mysql

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

  • 首先:继承我页面的元标记:

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

  • 第二:我试图在ajax调用中指定编码为(我使用jquery)也尝试使用utf8 for scriptCharset和内容类型charset:

    ` $('.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 ;
    `
    

  • 最终:这是生成的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>`
    

  • 我猜错了什么?

    3 个答案:

    答案 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')。不要两个都做!