当前位置: 首页 > 面试题库 >

PHP将HTML Charset编码弄乱了

顾兴昌
2023-03-14
问题内容

我有这个非常奇怪的问题。我有一个包含一些德语字母的网站,当它只是不带php的html时,当我将符号更改为UTF-8时,符号将显示为带有编码的属性,它们不会显示,而不是Ö。当我将html放入php并在Wamp上使用Zenset
studio以charset = iso-8859-1编码启动时,得到�而不是Ö(我想补充一下,这个Ö是单选按钮的值) 。当它在一个

标签以正确显示。您能告诉我如何解决此问题。我查看了其他站点,它们具有UTF-8编码并正确显示相同的符号。我试图更改php
edior编码,但我想没关系->一切都在Zend Studio的编辑器中正确显示…预先谢谢。


问题答案:

您可能已经来混合编码类型了。例如。以iso-8859-1发送但从MySQL或XML获取UTF-8文本编码的页面通常会失败。

要解决此问题,您必须相对于您选择使用内部编码的类型来保持对输入编码类型的控制。

如果将其作为iso-8859-1发送,则来自用户的输入也是iso-8859-1。

header("Content-type:text/html; charset: iso-8859-1");

如果mysql发送latin1,则您无需执行任何操作。

但是,如果您输入的不是iso-8859-1,则必须在将其发送给用户之前对其进行转换,或者在存储之前使其适应Mysql

mb_convert_encoding($text, mb_internal_encoding(), 'UTF-8'); // If it's UTF-8 to internal encoding

简短地说,这意味着您必须始终将输入转换为适合内部编码,并转换输出以匹配外部编码。

这是我选择使用的内部编码。

mb_internal_encoding('iso-8859-1'); // Internal encoding

这是我使用的代码。

mb_language('uni'); // Mail encoding
mb_internal_encoding('iso-8859-1'); // Internal encoding
mb_http_output('pass'); // Skip

function convert_encoding($text, $from_code='', $to_code='')
{
    if (empty($from_code))
    {
        $from_code = mb_detect_encoding($text, 'auto');
        if ($from_code == 'ASCII')
        {
            $from_code = 'iso-8859-1';
        }
    }

    if (empty($to_code))
    {
        return mb_convert_encoding($text, mb_internal_encoding(), $from_code);
    }
    return mb_convert_encoding($text, $to_code, $from_code);
}

function encoding_html($text, $code='')
{
    if (empty($code))
    {
        return htmlentities($text, ENT_NOQUOTES, mb_internal_encoding());
    }

    return mb_convert_encoding(htmlentities($text, ENT_NOQUOTES, $code), mb_internal_encoding(), $code);
}
function decoding_html($text, $code='')
{
    if (empty($code))
    {
        return html_entity_decode($text, ENT_NOQUOTES, mb_internal_encoding());
    }

    return mb_convert_encoding(html_entity_decode($text, ENT_NOQUOTES, $code), mb_internal_encoding(), $code);
}


 类似资料:
  • 问题内容: JPanel初始化 调用方法 在我的框架看起来像这样之前,http://i.imgur.com/XQlQeul.png 然后看起来像这样,http://i.imgur.com/RnVuUzt.png 我在想我的方法有错误,但是我似乎无法解决问题。有人知道发生了什么吗?我想要的结果将是第一张图片,但已被绘制。 问题答案: 您在执行任何自定义绘画之前未先致电就中断了绘画链 如果是共享资源,

  • 问题内容: 我正在使用json模块创建一个包含类似条目的文件 但是,在创建的-file文件中,字段顺序错误 这是一个问题,因为-strings的替换现在不正确。 如何强制功能保持给定顺序? 问题答案: 像其他答案正确指出的那样,在Python 3.6之前,字典是 无序的 。 就是说,JSON还应该具有 _无序_映射,因此原则上在JSON中存储有序字典没有多大意义。具体来说,这意味着在读取JSON对

  • 源编码与目标编码的不一致. 而中文window系统默认编码GBK,害惨了多少程序员. 要尽量减少出现乱码,我个人认为要做到5码合一, IDE(Eclipse/idea),页面(jsp/其他模板引擎),应用服务器(tomcat等), 源码(Java源码及周边文件),数据库编码. 将Eclipse设置为UTF-8 打开Eclipse安装目录下的eclipse.ini,在最末尾新增一行 -Dfile.

  • 问题内容: 我使用Python编写代码,我非常喜欢Notepad 。但是,当我使用制表符进行缩进时,在Notepad 中看起来很晚,但是当我运行该程序时,出现了缩进错误,并且当我在Emacs中检查代码时,我发现Notepad ++实际上增加了比制表符更多的空格。它显示在屏幕上。怎么了? 问题答案: 没有通用的制表符大小,因此我始终确保用空格替换制表符(因此您知道所看到的就是在其他任何地方都可以看到

  • 本文向大家介绍PHP中的惰性编码;迷你大乱斗,包括了PHP中的惰性编码;迷你大乱斗的使用技巧和注意事项,需要的朋友参考一下 如果PHP世界中有一件事确实让我感到烦恼,那就是程序员编写了我所谓的“惰性代码”。这是可以工作的代码,但是创建时间最少(通常是指击键)。这几乎总是一件坏事,因为它难以阅读,难以更改并且几乎始终没有评论。主要问题是PHP是一种宽容而又易变的语言,它允许您以各种不同的方式和格式编

  • 本文向大家介绍PHP+MYSQL中文乱码问题,包括了PHP+MYSQL中文乱码问题的使用技巧和注意事项,需要的朋友参考一下 从MySQL 4.1开始引入多语言的支持,但是用PHP插入的中文会出现乱码.无论用什么编码也不行. 解决这个问题其实很简单. 1.在建表的时候设置编码类型为gb2312_chinese_ci. 2.在PHP页面的数据库连接语句加一行mysql_query("SET NAMES