免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: kk298
打印 上一主题 下一主题

[在线等待救援] FreeBSD 7.0(x64) 中 php的 iconv() 失效. [复制链接]

论坛徽章:
0
11 [报告]
发表于 2008-03-13 12:25 |只看该作者
不论php的iconv()或者直接在FreeBSD上直接用指令iconv都只能将
gb2312或big5转换为utf8,

但gb2312或gbk就不能与big5进行互相转换 ...

实在令人费解, FreeBSD怎会这样的 ...

完全不知从何入手去解决, 请求有经验的兄弟指点迷律...

感激不尽 ....

论坛徽章:
0
12 [报告]
发表于 2008-03-13 14:13 |只看该作者
這麼少人使用FreeBSD 和 php嗎?

會的話, 請指點一二, 心急等待中....

THX...........................................

论坛徽章:
0
13 [报告]
发表于 2008-03-13 16:28 |只看该作者
等到花兒都謝了, 都沒人來指點一下呀?
唉  .....

论坛徽章:
0
14 [报告]
发表于 2008-03-13 17:21 |只看该作者
用如下的程序看看:
  1. 此文件在DW中生成,在文本中打开。
  2. <?php
  3.   $a = "羉砰";
  4.   $b = iconv('big5','gb18030',$a);
  5.   echo 'TC: ' . $a .'<br>';
  6.   echo 'SC: ' . $b .'<br>';
  7. ?>
复制代码

"羉砰"即BIG5下"繁體"未转换前在GB下显示的文字。
测试一下:
在页面编码为Big5下,是否$a显示为"繁體",$b为"楛闚"。
在页面编码为GB下,是否$a显示为"羉砰",$b为"繁體"。

楼主的程序只能显示"繁"是正确的,因为BIG5下"繁體"对应GB(大字库如GB18030)下"繁體",但是由于GB2312字库小,没有"體"这个字,所以只显示"繁"。
但是选择GBK,就能正确显示。

论坛徽章:
0
15 [报告]
发表于 2008-03-13 18:20 |只看该作者
楼上兄弟, 多谢回复, 我的php程序在Linux上没有问题的,

现在的问题不是说我的IE显示时是否编码有问题呀,亦不是gb2312不行,用gbk
就行, 问题是在FreeBSD上, 不论php的iconv()或 mb_convert_encoding()或者
直接在FreeBSD上直接用指令iconv都只能将gb2312, gbk或big5转换为utf8,
但gb2312或gbk就不能与big5进行互相转换 ..

看看我的贴图就会明白, 我将结果用md5()输出 …

iconv.jpg (130.23 KB, 下载次数: 53)

iconv()問題

iconv()問題

论坛徽章:
0
16 [报告]
发表于 2008-03-13 22:04 |只看该作者
我试过了,在freebsd7.0 x64上用gbk转big5一切正常,是楼主自己的问题,仔细检查下吧

论坛徽章:
0
17 [报告]
发表于 2008-03-13 22:24 |只看该作者
又仔细试了下更多的情况,楼主所说的确实存在,我估计是gbk库内的简体在在big5库内没有对应造成的
http://www.bsdbbs.org/kk298.php

论坛徽章:
0
18 [报告]
发表于 2008-03-13 22:33 |只看该作者
究其原因,像"爱国"因为在发起big5码的地区或国家内并没有简体的这两个字使用,所以就没有收录到big5码内,但是在大陆,"爱国"和"愛國"都有使用,在gbk里都有收录.所以从big5到gbk可以可以找到正常转换.但是从gbk转big5的时候,涉及到big5里没有的"爱国"两个简体字的时候就会出现问题,因为big5里根本就没有这两个字.这也是为什么楼主在linux下从gbk向big5转"爱国诗人"的时候,转过来后变成繁体的原因.而且我估计linux下的包应该是该发行版特别改造过的,转换的时候先把big5里没有的简体字变为繁体字,再输出这个繁体字的big5编码给浏览器.而freebsd方面没有人去做这方面的工作,所以就无法显示了.

[ 本帖最后由 bsdbbs 于 2008-3-13 22:34 编辑 ]

论坛徽章:
0
19 [报告]
发表于 2008-03-13 23:01 |只看该作者
找到了一个映射表,可以把big5里没有的gb里的简体字直接转为big5里的繁体字编码,演示在
http://www.bsdbbs.org/zhuanhuan/bsdbbs.org.php
下载在
http://www.bsdbbs.org/thread-153-1-1.html

可以将就着先用,彻底解决的话,现在看来还有难度

论坛徽章:
0
20 [报告]
发表于 2008-03-14 08:52 |只看该作者
bsdbbs 老大, 非常感谢你的大力热情的帮助 ...

我的PHP iconv() 用 iconv('big5','gbk',"愛國詩人"); 是可以显示出 "愛國詩人" , 而非預期的 “爱国诗人”
显示出来的仍是繁体字, 而非简体字呀

应该有不少人用FreeBSD和php, 但搜索bbs的帖子, 好像没有人有iconv()的问题?
是没有问题亦还是没人用iconv()呢?

因为我的PHP程序设计都是以UTF-8编码, 但有些用户完全不懂简体字或繁体字, 故必须转换为
纯简体或纯繁体的, 在 Linux FC5 上开发时是这样转换的:
utf-8格式的gb2312 <--->  gb2312  <--->  big5  <--->  utf-8格式的big5

现在, 在FreeBSD上就不能进行gb2312  <--->   big5 这一步的转换, 不是说某些字不能转换,
而是所有字都不能进行转换, 连FreeBSD的指令iconv亦出现同样的问题,
不知道, php的iconv()是否call 系统的libconv来进行转换? 我想应该是 …
如果是, 应该是FreeBSD 7.0(x64)上的libconv有问题呀?
bsdbbs 老大, 你所提供的map, 只是单向的. 我想现在已不太能寄望能解决
FreeBSD的问题, 只能更改自己的程序了 ….

[ 本帖最后由 kk298 于 2008-3-14 09:07 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP