读出文件内容字符串到一变量.
用 mb_detect_encoding() 检测编码方式.
用iconv() 进行转换.
写入文件.
用 mb_detect_encoding() 检测编码方式.
用iconv() 进行转换.
写入文件.
解决方案 »
- 基于PHP和MySQL的简单Blog系统
- #!/usr/bin/php 如何不显示在网页中
- width与length区别
- 一个数据库,两种编码是否可以?
- 关于PHP网站后台登陆信息截取并保存在WEB目录的问题
- iframe中如何获取父窗口中设定的iframe名称?
- 这是为什么: Unkown(): unable to load dynamic library 'c:\php4\extensions\php_curl.dll' - 找不到指定的模块?
- 我在ftp跟目录下有根目录和文本文件,想通过is_dir判断目录,然后只返回目录名,怎么实现?
- 数据库替换问题
- 数据存储在数据库中取比较快还是数据文件例如xml中取比较快
- 求教:能把对象(或者数据结构)传递到下一页面吗?
- php中能够连接java的Servlet或者EJB吗?
TO netvt(唯她(为了泡老婆,努力学习LISP)) : 不行哦! detect_encoding 即使是ANSI编码返回的还是UTF-8 如果行的话给个例子吧
过一会测试一下!
<?php
$str = "abcdefg中国";
echo mb_detect_encoding($str, "ASCII, UTF-8, CP936, GB2312");//输出utf-8
$str1 = "abcdefg";
echo mb_detect_encoding($str1, "ASCII, UTF-8, CP936, GB2312");//输出ASCII
?>
ascii(latin1) 编码方式与utf-8编码方式的内容是完全相同的.所以不必进行转换.
转成utf-8,呵呵我写的文件批量转换器,你为什么不去看下子阿
可以将指定目录下所有文本文件从x编码转成utf-8编码或其他编码http://community.csdn.net/Expert/topic/4169/4169642.xml?temp=.5010492注:本程序对完全由ansi字符组成的文件将失效,虽然iconv的确工作了,但是fwrite的时候却并不执行写的动作,我不知道为什么
比如
字母p的ansi模式下的编码为 50
而utf-8编码下则为 50 00
------------
字母p的ansi模式下的编码为 50
而utf-8编码下则为 50 00
========================
utf-8 下应为 50
unicode 下为 00 50
然后用ue打开,二进制编辑
你将看到50 00
* 所有 >U+007F 的 UCS 字符被编码为一个多个字节的串, 每个字节都有标记位集. 因此, ASCII 字节 (0x00-0x7F) 不可能作为任何其他字符的一部分.
* 表示非 ASCII 字符的多字节串的第一个字节总是在 0xC0 到 0xFD 的范围里, 并指出这个字符包含多少个字节. 多字节串的其余字节都在 0x80 到 0xBF 范围里. 这使得重新同步非常容易, 并使编码无国界, 且很少受丢失字节的影响.
* 可以编入所有可能的 231个 UCS 代码
* UTF-8 编码字符理论上可以最多到 6 个字节长, 然而 16 位 BMP 字符最多只用到 3 字节长.
* Bigendian UCS-4 字节串的排列顺序是预定的.
* 字节 0xFE 和 0xFF 在 UTF-8 编码中从未用到.下列字节串用来表示一个字符. 用到哪个串取决于该字符在 Unicode 中的序号.
U-00000000 - U-0000007F: 0xxxxxxx
U-00000080 - U-000007FF: 110xxxxx 10xxxxxx
U-00000800 - U-0000FFFF: 1110xxxx 10xxxxxx 10xxxxxx
U-00010000 - U-001FFFFF: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
U-00200000 - U-03FFFFFF: 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
U-04000000 - U-7FFFFFFF: 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxxxxx 的位置由字符编码数的二进制表示的位填入. 越靠右的 x 具有越少的特殊意义. 只用最短的那个足够表达一个字符编码数的多字节串. 注意在多字节串中, 第一个字节的开头"1"的数目就是整个串中字节的数目.例如: Unicode 字符 U+00A9 = 1010 1001 (版权符号) 在 UTF-8 里的编码为: 11000010 10101001 = 0xC2 0xA9而字符 U+2260 = 0010 0010 0110 0000 (不等于) 编码为: 11100010 10001001 10100000 = 0xE2 0x89 0xA0这种编码的官方名字拼写为 UTF-8, 其中 UTF 代表 UCS Transformation Format. 请勿在任何文档中用其他名字 (比如 utf8 或 UTF_8) 来表示 UTF-8, 当然除非你指的是一个变量名而不是这种编码本身.
那我为什么用记事本另存的utf-8在ue里以二进制模式打开,显示的是双字节p50 00
我没有用过UE 不太清楚.你可以用记事本写20个字母,分别存为 ANSI 和utf-8格式的,
再用资源管理器看一下两个文件的大小(查看文件属性有精确的文件字节数)
后面的内容一样
只不过不要用 ANSI 编码,汉字有ANSI编码吗?
汉字要用 GB2312,BIG5 等.纯英文的就用ASCII.
请见 http://community.csdn.net/Expert/topic/4175/4175715.xml?temp=5.797976E-02