【发布时间】:2011-07-31 17:58:57
【问题描述】:
你们在回答我之前认为的一个问题时做得非常出色 - 我会在我深入转换但发现我做错了什么之前问这个问题。我为自己制作的网站只有 3 页。它有表格,sqli db。有人告诉我使用 UTF-8(我部分使用了,但没有完全使用)哈哈。好的,听起来很酷。现在我想将其修复为 100% UTF-8 感知,我已经在 PHP、JS 和 HTML 中编写了大约 1,900 行代码,而不使用多字节函数。所以......这是我的问题......在我的转换中我已经做到了......(来自不同地方的代码片段......)
PHP
date_default_timezone_set('America/Toronto'); // sets the timezone to Eastern Stand Time
HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
等
SQL
(来自 cpanel 界面)MySQL 连接整理”:utf8_general_ci
SQL DB(仍处于 pre utf-8 模式)
用户名 varchar(50) latin1_general_cs
公司名称 varchar(50) latin1_swedish_ci
fname varchar(25) latin1_swedish_ci
我的表格中没有有价值的数据。我会将它们更改为以下之一(但我不确定是哪一个)...
utf8_general_ci 或者 utf8_unicode_ci
虽然我想让该网站可供外国人使用,但这不是一个高优先级,但因为我正在使用 UTF-8 样式,它可能已经适用于外语。
我的问题是……
1) 我设置了我的时区,我没有在 php 中设置我的语言环境,因为我从来没有这样做过。我需要这样做吗?我如何为我的多伦多/加拿大位置执行此操作?
2) 是否通过元标记设置每个页面足以使整个页面 UTF-8
3) 使用元标记是否意味着我的所有表单字段都已作为 UTF-8 数据输入?如果没有,我该如何改变它们。
4) 我的数据库应该使用哪一个? utf8_general_ci 或 utf8_unicode_ci
5) 我需要区分大小写。我只看到 ci 为 utf8。这是因为“Dave”与“dave”不同,所以使用多字节比较会自动比较大小写...??!?!?!
6) 我的数据库目前有 50 个字符用于存储 ASCII 内容 - 我假设通过在数据库中切换到 utf-8,对于像我这样的英国人来说,50 个存储就可以了 -但是,如果某个外国人出现并输入了一堆奇怪的符号,我需要将存储空间增加 x4 以容纳 unicode 的所有额外字节?我不介意用掉更多的存储空间,但我很好奇分配它的正确方法是什么。既然它是一个 VARCHAR(50) ,它真的很重要吗?如果名称是“Dave”,它将是 4 个字符。如果是外国名字,符号中的“Dave”可能是12个字符!哈哈。因此,如果我将 100 分配给应该做的用户名字段,因为不太可能所有字符都是 4 个字节。或者,只需将其设置为 x4,就像我对英语的要求一样,并将它们全部设为 VARCHARS 以节省空间。当他们在表单上输入数据时,我将使用 MB_LENGTH 函数(我忘记了确切的函数),因此我仍然可以控制输入的字符数。
7) 如何测试我的 unicode 网站?除了漂亮的英语,我从未使用过其他任何东西:) 大声笑。如何切换浏览器?假装我来自其他地方并输入一堆代码,看看我的函数在我重写它们以使用 mb_(多字节)函数后是否工作。或者,没有什么可以切换的......我只需输入 ALT 245 或其他东西,我就会得到符号?!?!?我不知道如何输入外国测试字符!因为我没有对我的网站进行足够的测试,所以让所有外国客户都无法输入密码,这会很糟糕:)
8) 我知道使用某些函数 ctype、mb_ 来处理 unicode 比较、字符串等。对我来说有什么惊喜吗?没有按应有的方式工作?
是的...我很啰嗦! :) 我使用 Dreamweaver CS3,但这没关系。我的实际文件中没有嵌入 UTF-8 字符。
等待你的智慧......
【问题讨论】:
-
我没有得到你的第一个问题。本地化是什么意思。语言环境?
-
是的。语言环境。我修正了拼写! :) 如果网站都是 UTF-8,我想对于那些函数我还必须指定语言环境,并且有一个名为 setlocale 的函数或其他东西 - 我也需要使用它吗?
标签: php xhtml utf-8 multibyte-functions