准备PHP应用程序以与UTF-8一起使用

Sfi*_*oza 14 php unicode webserver utf-8 character-encoding

UTF-8现在是Web应用程序的事实标准,但PHP不是PHP的默认编码(直到6.0).默认情况下,大多数服务器都设置为ISO-8859-1编码.

如何重载默认设置.htaccess以确保UTF-8,语言环境等一切顺利?Web服务器的任何选项,Unix操作系统?

这些设置有没有全面的清单?例如mbstring选项,iconv设置,区域设置等我应该为每个多语言项目设置?任何预先定义.htaccess的例子?

(在我的特殊情况下,我需要设置语言:英语,荷兰语和俄语.服务器在乌克兰).

tak*_*hin 15

一些有用的选项.htaccess:

########################################
# Locale settings
########################################

# See: http://php.net/manual/en/timezones.php
php_value date.timezone "Europe/Amsterdam"

SetEnv   LC_ALL  nl_NL.UTF-8

########################################
# Set up UTF-8 encoding
########################################

AddDefaultCharset UTF-8
AddCharset UTF-8 .php

php_value default_charset "UTF-8"

php_value iconv.input_encoding "UTF-8"
php_value iconv.internal_encoding "UTF-8"
php_value iconv.output_encoding "UTF-8"

php_value mbstring.internal_encoding UTF-8
php_value mbstring.http_output UTF-8
php_value mbstring.encoding_translation On
php_value mbstring.func_overload 6

# See also php functions:
# mysql_set_charset
# mysql_client_encoding

# database settings
#CREATE DATABASE db_name
#   CHARACTER SET utf8
#   DEFAULT CHARACTER SET utf8
#   COLLATE utf8_general_ci
#   DEFAULT COLLATE utf8_general_ci
#   ;
#
#ALTER DATABASE db_name
#   CHARACTER SET utf8
#   DEFAULT CHARACTER SET utf8
#   COLLATE utf8_general_ci
#   DEFAULT COLLATE utf8_general_ci
#   ;

#ALTER TABLE tbl_name
#   DEFAULT CHARACTER SET utf8
#   COLLATE utf8_general_ci
#   ;
Run Code Online (Sandbox Code Playgroud)


hak*_*kre 5

你是对的,UTF-8是网络应用的不错选择.

编码是获得处理的数据的元信息.只要你知道(二进制)数据的编码,就知道你在处理什么.如果您不知道编码,就会开始迷路.我经常将其称为链,如果编码链断开,数据将被破坏.这对于显示数据和安全性都是如此.

根据经验,PHP是二进制的,它是指定编码的上下文/你(例如你如何保存你的php源代码文件).

那么让我们来处理一个简短(不完整)的列表:

操作系统

环境变量可能会告诉您正在使用的语言环境和编码.例如,文件系统对文件和目录的名称进行编码.我对这个主题不是很坚定,通常我们会尝试用英语命名我们的文件,所以只使用US-ASCII拉丁语扩展字符集安全范围内的字符,就像ISO-8859-1你的情况一样UTF-8.

只要记住这一点,当您保存用户上传的文件:刚过滤的文件名基本字母和punctation,你就会有几乎没有麻烦(a-z,A-Z,0-9,.,-,_),甚至让他们全部小写视觉的目的.

如果您认为这会降低可用性并且文件系统不提供UTF-8中的unicode字符范围,您可以回退到简单编码rawurlencode(如Percent-Encoding,triplet)并通过将该名称解析为提供要下载的文件磁盘.

通常你只需要处理你拥有的东西.开始向常见的系统管理员或程序员询问字符编码,大多数人都会告诉你他们并不是真正感兴趣.当然这是主观的,但如果你需要有人为你配置一些东西,这可能会有所不同.

HTML

这仅仅是PHP独立的,它是关于脚本提供的输出所以工作领域.

经验法则是:指定它.如果你没有指定它(HTML文件,CSS文件,Javascript文件),不要指望它能正常工作.那就做吧.编码是一个链,如果有很多组件,确保每个人都知道它的编码.否则浏览器只能猜测.UTF-8这是一个很好的选择,但我们的工作是保持谨慎并使其精确定义.

PHP设置

作为一般经验法则,请开始阅读php.inilinux发行版的PHP包附带的文件.它附带可读文档的评论和更多链接.我想到的一些设置:

字符串

回答您的问题:设置和参数的需要总是取决于您使用的组件.对于浏览器或网络服务器等常规设备,可以提供推荐设置以配置它UTF-8.但其他一切都取决于它.最重要的是寻找它并确保您知道编码并可以配置/指定它.通常它是记录在案的.只要您不需要处理可移植代码,就可以更加简单,因为您可以控制环境,或者只需要处理特定环境.编写代码时考虑到编码的防御性,你应该没问题.