更改PHP应用程序的语言设置 - WAMP服务器

时间:2016-07-04 16:15:54

标签: php wampserver

更改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 / ...将正确解释应用程序并显示字母表中的所有字符?

1 个答案:

答案 0 :(得分:2)

您的问题不在于语言,实际上语言不会影响任何内容。问题在于charset。

enconding中的Commons问题

使用重音时很常见,我们会发现奇怪的字符,例如:

  • 与此é(Unicode中的é字符一样),这是因为该字符是unicode,但该页面位于iso-8859-1(或兼容)。
  • 信号/字符就是一个例子,当您使用兼容的重音符号&#34; iso-8859-1&#34;在一个试图处理&#34; UTF-8&#34;的页面上因为使用Content-Type: ...; charset=utf8

使用UTF-8

需要什么
  • PHP脚本(请参阅服务器上的文件而不是答案)必须保存在&#34; utf-8中,不含BOM&#34;
  • 使用charset=utf-8
  • 设置MySQL(或其他数据库系统)
  • 建议在PHP脚本中使用header('Content-type: text/html; charset=UTF-8');(可能没有必要使用框架,情况各不相同)。
  

注意: UTF-8的优势在于您可以使用各种语言&#34;在您的页面中包含&#34; iso-8859-1&#34;。

不支持的字符

关于ISO-8859-1

如果您的网站不使用拉丁文以外的其他字符,并且您不需要&#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,我建议您执行以下步骤:

使用UTF-8(无BOM)的PHP脚本

  

注意:了解http://en.wikipedia.org/wiki/UTF-8#Byte_order_mark

中的BOM

您应该在 UTF-8中没有BOM 的情况下保存所有PHP脚本(但您将使用includerequire等),使用像{{3这样的程序或SublimeText用于转换文件:

  • 使用notepad ++:

    utf8 without bom notepad++

  • 使用Sublime Text:

    utf8 sublime text

  • Netbeans到 Window &gt; 偏好设置&gt; 一般&gt; 工作区&gt; 文本文件编码

    utf8 netbeans

使用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;

如果表已经存在,那么首先进行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!';