更改PHP应用程序的语言设置 - WAMP服务器。 Firefox不会在我的PHP应用程序中识别语言,并用非常小的<?>-icons
替换我的语言中的字母(使用适当的引号)。在PHP应用程序文件的开头写入<html lang=nb-NO>
或<html lang=no>
并在标题中不使用<meta charset=iso-8859-1>
也无济于事。
字母替换不会发生在PHP-admin中,也不会发生在本地安装的Wordpress中。在Wamp服务器3.0.0中。大多数文字都是英文的。存储在MySQL中的数据已正确存储。右键单击系统托盘中的Wamp-server图标,然后语言菜单选项会在英语之前显示带有v-mark的语言列表。
如何更改设置以便Firefox / IE / Opera / ...将正确解释应用程序并显示字母表中的所有字符?
答案 0 :(得分:2)
您的问题不在于语言,实际上语言不会影响任何内容。问题在于charset。
使用重音时很常见,我们会发现奇怪的字符,例如:
é
(Unicode中的é
字符一样),这是因为该字符是unicode,但该页面位于iso-8859-1(或兼容)。�
信号/字符就是一个例子,当您使用兼容的重音符号&#34; iso-8859-1&#34;在一个试图处理&#34; UTF-8&#34;的页面上因为使用Content-Type: ...; charset=utf8
。charset=utf-8
header('Content-type: text/html; charset=UTF-8');
(可能没有必要使用框架,情况各不相同)。注意: UTF-8的优势在于您可以使用各种语言&#34;在您的页面中包含&#34; iso-8859-1&#34;。
不支持的字符
如果您的网站不使用拉丁文以外的其他字符,并且您不需要&#34;额外编码&#34; (例如&#34;图标&),我建议使用ISO-8859-1 #34;&#34; UTF-8&#34;或&#34; UTF-16&#34;),但即使您不需要UTF-8,也可能是移动到的原因之一UTF-8,正是在2004年6月,ISO / IEC开发组负责其维护,宣布结束对此编码的支持,重点关注UCS和Unicode。
来源:http://en.wikipedia.org/wiki/ISO_8859-1
如果您决定在您的网站中使用UTF-8,我建议您执行以下步骤:
中的BOM
您应该在 UTF-8中没有BOM 的情况下保存所有PHP脚本(但您将使用include
,require
等),使用像{{3这样的程序或SublimeText用于转换文件:
使用notepad ++:
使用Sublime Text:
Netbeans到 Window &gt; 偏好设置&gt; 一般&gt; 工作区&gt; 文本文件编码:
要使用UTF-8创建表格,您应该使用以下内容:
CREATE TABLE mytable (
id BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
title varchar(300) DEFAULT NULL
) ENGINE=InnoDB CHARACTER SET=utf8 COLLATE utf8_unicode_ci;
如果表已经存在,那么首先进行BACKUP,然后使用以下命令之一(视情况而定):
转换数据库:
ALTER DATABASE mysdatabase CHARACTER SET utf8 COLLATE utf8_unicode_ci;
转换特定表格:
ALTER TABLE mytable CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
除了以UTF-8创建表外,还必须将连接定义为UTF-8。
使用PDO notepad++:
$conn = new PDO('mysql:host=HOST;dbname=mysdatabase', 'USER', 'PASSWORD');
$conn->exec('SET CHARACTER SET utf8');//set UTF-8
使用mysqli使用exec
:
$mysqli = new mysqli('HOST', 'USER', 'PASSWORD', 'mysdatabase');
if (false === $mysqli->set_charset('utf8')) {
printf('Error: %s', $mysqli->error);
}
您可以使用<meta>
标记来设置字符集,但建议您在请求的响应中执行此操作(服务器响应),定义&#34;标头&#34; (这并不意味着您不应该使用<meta>
)。
使用mysqli_set_charset
函数,使用服务器响应的原因也是因为页面呈现时间为服务器响应和页面&#34; AJAX&#34;还需要header();
定义的字符集。
注意:在
header();
,echo ...;
或其他输出函数之前,print "...";
应始终位于脚本顶部。
示例:
<?php
header('Content-Type: text/html; charset=UTF-8');
echo 'Hello World!';