更改 PHP 应用程序的语言设置 - WAMP 服务器
Posted
技术标签:
【中文标题】更改 PHP 应用程序的语言设置 - WAMP 服务器【英文标题】:Alter language settings for PHP application - WAMP server 【发布时间】:2016-11-06 10:21:21 【问题描述】:。 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 图标,然后 Language 菜单选项会给出一个语言列表,在英语前带有 v-mark。
如何更改设置以使 Firefox/IE/Opera/... 正确解释应用程序并显示字母表中的所有字符?
【问题讨论】:
【参考方案1】:您的问题不在于语言,实际上语言不会影响任何事情。问题出在字符集上。
结尾的常见问题
在处理重音时,我们发现奇怪的字符很常见,例如:
像这样é
(Unicode 中的é
字符),这是因为该字符是 unicode,但页面是 iso-8859-1(或兼容)。
�
信号/字符就是一个例子,当您在尝试处理“UTF-8”的页面上使用带有“iso-8859-1”的兼容重音时,因为使用了Content-Type: ...; charset=utf8
.
使用 UTF-8 需要什么
PHP 脚本(指服务器上的文件,而不是其答案)必须保存在 "utf-8 without BOM" 用charset=utf-8
设置MySQL(或其他数据库系统)
建议在PHP脚本中使用header('Content-type: text/html; charset=UTF-8');
(可能不需要使用框架,情况因人而异)。
注意: UTF-8 的优势在于您可以在页面中使用各种“语言”以及“iso-8859-1”不支持的字符。
关于 ISO-8859-1
如果您的网站不使用拉丁语以外的字符并且您不需要“额外编码”(例如“UTF-8”的“图标”或“UTF-16”),但是即使您不需要 UTF-8,也可能是迁移到 UTF-8 的原因之一,这是在 2004 年 6 月,负责 ISO/IEC 的开发组它的维护,宣布结束对这种编码的支持,专注于 UCS 和 Unicode。
来源:http://en.wikipedia.org/wiki/ISO_8859-1
如果您决定在您的网站中使用 UTF-8,我建议您执行以下步骤:
带有 UTF-8 的 PHP 脚本(无 BOM)
注意:阅读http://en.wikipedia.org/wiki/UTF-8#Byte_order_mark中的BOM
您应该将所有 PHP 脚本(但您将与 include
、require
等一起使用)保存在 不带 BOM 的 UTF-8 中,使用像 SublimeText 或 notepad++ 这样的程序用于转换文件:
使用记事本++:
使用崇高文本:
Netbeans 进入 Window > Preferences > General > Workspace > Text File Encoding kbd>:
带有 UTF-8 的 MySQL
要在 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;
如果表已经存在,那么首先对它们进行备份,然后使用以下命令之一(视情况而定):
转换数据库:
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 使用 exec
:
$conn = new PDO('mysql:host=HOST;dbname=mysdatabase', 'USER', 'PASSWORD');
$conn->exec('SET CHARACTER SET utf8');//set UTF-8
使用 mysqli 使用 mysqli_set_charset
:
$mysqli = new mysqli('HOST', 'USER', 'PASSWORD', 'mysdatabase');
if (false === $mysqli->set_charset('utf8'))
printf('Error: %s', $mysqli->error);
设置页面字符集
您可以使用<meta>
标签来设置字符集,但建议您在请求的响应(服务器响应)中这样做,定义“标头”(这并不意味着您不应该使用@987654347 @)。
使用header
函数,之所以使用服务器响应也是因为作为服务器响应的页面渲染时间和页面“AJAX”也需要header();
定义的charset。
注意:
header();
应始终位于脚本顶部,位于任何echo ...;
、print "...";
或其他输出函数之前。
例子:
<?php
header('Content-Type: text/html; charset=UTF-8');
echo 'Hello World!';
【讨论】:
不错的综合答案以上是关于更改 PHP 应用程序的语言设置 - WAMP 服务器的主要内容,如果未能解决你的问题,请参考以下文章