我有一个运行apache 2.0的日本RHEL服务器。
这是我的问题:
我想要Content-Type: text/html; charset=UTF-8
响应,但目前它回复Content-Type: text/html; charset=Shift_JIS
我尝试过:
- 将
AddDefaultCharset utf-8
添加到工作.htaccess
文件中(无法编辑 apache 配置文件) - 将
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
添加到 php 文件 - 将
php_value default_charset UTF-8
添加到.htaccess
文件 -
用非常简单的
test.php
进行测试:<?php header('Content-Type: text/html; charset=UTF-8'); ?> <!DOCTYPE html> <html lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body> <h1>Test</h1> </body> </html>
以上都不起作用。有人请帮助我。
名思义,AddDefaultCharset
更改默认字符集。如果有另一个指令为您的文件类型设置了不同的内容类型,您的设置将被覆盖。
在这种情况下,如果您自己不这样做,PHP 本身将始终设置 Content-Type
标头,因此除非您将 PHP 作为 Apache 模块运行并使用 php_...
Apache 指令,否则无法从 Apache 配置它。
有关详细信息,请查看 default_charset
PHP 指令:
所有版本的 PHP 都将使用此值作为 PHP 发送的默认内容类型标头(如果未覆盖该标头) 通过调用 header()。
显然,您在响应正文中放入的任何内容(例如<meta>
标记)都不会更改之前发送的响应标头。
问题与php.ini中的mbstring设置有关。当从更改时它起作用
mbstring.language = Japanese
mbstring.http_input = auto
mbstring.http_output = SJIS
自
mbstring.language = Japanese
mbstring.http_input = pass
mbstring.http_output = pass
但首先,检查阿尔瓦罗·冈萨雷斯对这个问题的回答。