从gb到utf-8
现在不少中文网站的编码都在从gb2312向utf-8编码转化。其中出现了不少问题在这里总结一下:
前提:
保证所有的文件保存的时候都是utf-8编码的,而不是ansi
具体设置:如果使用的是文本编辑器,那么在保存文件的时候就有一个编码选择(图1)
如果是使用的dreamweaver那么就麻烦一点。
使用dreamweaver编辑静态文件时,那么将文件的charset标签修改成utf-8:<metahttp-equiv="Content-Type"content="text/html;charset=gb2312"/>
改为<metahttp-equiv="Content-Type"content="text/html;charset=utf-8"/>
然后选择另存为这时候dream会将文件保存为utf-8编码的
注:如果使用的是access数据库那么只需要以上两步就可以了,access本身采用utf-8编码。
asp篇
代码页设置:
asp文件的第一行:<%@LANGUAGE="VBSCRIPT"CODEPAGE="936"%>
改成:<%@LANGUAGE="VBSCRIPT"CODEPAGE="65001"%>
这也直接决定了asp通过ado访问数据库采用的编码。注:如果使用的是access数据库那么只需要以上两步就可以了,access本身采用utf-8编码。
如果使用了模板程序
通常的模板程序,通过fso对象来读写文件。但是这种方式没法支持utf-8,需要改成stream对象来读写文件,下面是几行关键的代码:使用stram读文件
SetobjStream=Server.CreateObject("ADODB.Stream")
WithobjStream
.Open
.Charset="utf-8"
.Position=objStream.Size
.LoadFromFileserver.mappath("sc.htm")
wstr=.ReadText
.Close
EndWith
SetobjStream=Nothing
使用stream写文件SetobjStream=Server.CreateObject("ADODB.Stream")
WithobjStream
.Open
.Charset="utf-8"
.Position=objStream.Size
.WriteText=wstr
.SaveToFileserver.mappath("wz/sc_"&classid&".htm"),2
.Close
EndWith
SetobjStream=Nothing
php篇
php与access连接:
在windows主机上使用php的com扩展可以连接access数据库,在建立ADODB.Connection的时候指定代码页参数为65001
<?php
$conn=newCOM("ADODB.Connection",NULL,65001)ordie("ADOconnectfailed!");
$rs=newCOM("ADODB.RecordSet")ordie("ADOrecordsetfail");$conn->open("Provider=Microsoft.Jet.OLEDB.4.0;DataSource=data.mdb");
$rs=$conn->Execute("select*fromdata");
whilenot$rs->EOF
echo$rs->Fields["title"]->value;
?>
php与mysql连接
与mysql数据库建立好连接后首先执行以下SQL查询:
<?php mysql_query("SETNAMES"utf8""); ?>
mysql手册 关于setnames的说明SETNAMES显示客户端发送的SQL语句中使用什么字符集。因此,SETNAMES"cp1251"语句告诉服务器“将来从这个客户端传来的信息采用字符集cp1251”。它还为服务器发送回客户端的结果指定了字符集。(例如,如果你使用一个SELECT语句,它表示列值使用了什么字符集。)
SETNAMES"x"语句与这三个语句等价:
mysql>SETcharacter_set_client=x;
mysql>SETcharacter_set_results=x;
mysql>SETcharacter_set_connection=x;
将x设置为character_set_connection也就设置了collation_connection是x的默认校对规则。
使用adodb类:
设置"charpage"属性为65001;
<?php
require_once("adodb/adodb.inc.php");
$conn=&ADONewConnection("ado_access");
$conn->charPage="65001";
//$conn->charPage=65001;
//$conn->debug=true;
$dsn=sprintf("Provider=Microsoft.Jet.OLEDB.4.0;DataSource=%s",realpath("2data.mdb"));
//$dsn=sprintf("Driver={MicrosoftAccessDriver(*.mdb)};Dbq=%s",realpath("data.mdb"));
$conn->Connect($dsn);
相关文章
- java mediatype utf-8_Java MediaType.APPLICATION_JSON_UTF8屬性代碼示例
- java bufferedwriter 编码,Java BufferedWriter对象与utf-8
- dfile.encoding=utf-8 乱码_OrdosTF格式是什么格式
- 什么是Python的标识符_utf-8是什么意思
- ansi utf-8编码_utf8是等长编码吗
- JAVA以UTF-8导出CSV文件,用excel打开产生乱码的解决方法
- UTF-8编码
- utf-8编码转换成gb2312
- 采用UTF-8解决RubyonRails程序的中问题
- PHP字符串编码截取函数(兼容utf-8和gb2312)
- 匹配中文的正则(GB2312/utf-8)
- 解析使用substr截取UTF-8中文字符串出现乱码的问题
- php实现utf-8转unicode函数分享
- 完美的2个php检测字符串是否是utf-8编码函数分享
- php中隐形字符65279(utf-8的BOM头)问题