Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

關於TAG無法正確轉換字符BIG5問題-希望茄子或安笛~還是其他高手能幫忙(7/25更新)

[复制链接]
hks888 发表于 2007-7-24 17:25:39 | 显示全部楼层 |阅读模式
看了很多方法,因為伺服器環境的不同,所以解決方式也不同
在WINDOWS+APACHE的環境下,依照下列方法可以解決TAG字符問題
環境為:WINDOWS+APACHE(PHP5)+SS5.5.2/XS3.0.2(BIG5)

修改PHP.INI
mbstring.language = Traditional Chinese
mbstring.internal_encoding = BIG5
mbstring.http_input = BIG5
mbstring.http_output = BIG5
mbstring.encoding_translation = On
mbstring.detect_order = BIG5
mbstring.substitute_character = BIG5,ISO-8859-1;
mbstring.func_overload = 2

但是按照以上修改完後,卻發生無法登入的問題
但將 mbstring.internal_encoding = BIG5 改為 mbstring.internal_encoding = ISO-8859-1
或將 mbstring.func_overload = 2 改為 mbstring.func_overload = 0
就可以正常登入,但是TAG卻又無法正常轉換字符了

設置 mbstring.func_overload 的目的是:
將 strtolower()函數轉為 mb_strtolower()函數
mb_strtolower()函數可透過 mbstring.internal_encoding 的設置來確保輸出轉換字符為BIG5

我是以茄子提供的代碼測試的,在還未設置mbstring之前,big5的環境下卻發生字符無法正確轉換,且確定可使用strtolower函數
在設置完mbstring之後,就可正常轉換了
  1. <?php
  2. echo strtolower("中華人民共和國");
  3. phpinfo();
  4. ?>
复制代码


在這之前,我也試過將 setlocale(LC_ALL,"zh_TW"); 加到 ss 之 config.php 的 ?> 前,但問題還是一樣,無法正確識別字符

P.S:若可以幫我將所有關於TAG程序文件,有使用到 strtolower()函數,將其全部換成 mb_strtolower()函數,那就省事多了,謝謝
這還需官方來做修改,因為部分重要程序文件都已ZEND

還有!~在設置完mbstring,於相同環境下discuz bbs可正常登入,但是只要開啟ss頁面,bbs的cookie會被ss洗掉
我想應該是設置了 mbstring.func_overload 的關係,因為substr() 函數會被轉換成 mb_substr()函數,這兩函數間有差異,所以會發生無法登入的情況

希望茄子可以幫忙解決,謝謝

[ 本帖最后由 hks888 于 2007-7-25 03:40 编辑 ]
茄子 发表于 2007-7-25 09:51:00 | 显示全部楼层
我们检查下
回复

使用道具 举报

安笛 发表于 2007-7-25 09:53:15 | 显示全部楼层
mbstring.language = "universal"
mbstring.internal_encoding =UTF-8


按照这个设置一下您的服务器  看一下是否还有问题
回复

使用道具 举报

茄子 发表于 2007-7-25 10:05:02 | 显示全部楼层
我们没有用到mbstring这个函数的
最好让空间商支持strtolower函数
回复

使用道具 举报

 楼主| hks888 发表于 2007-7-25 13:38:39 | 显示全部楼层
原帖由 安笛 于 2007-7-25 09:53 发表
mbstring.language = "universal"
mbstring.internal_encoding =UTF-8


按照这个设置一下您的服务器  看一下是否还有问题

因為本身不是utf8編碼環境,所以改成utf8網頁會亂碼,謝謝
回复

使用道具 举报

 楼主| hks888 发表于 2007-7-25 13:44:50 | 显示全部楼层
原帖由 茄子 于 2007-7-25 10:05 发表
我们没有用到mbstring这个函数的
最好让空间商支持strtolower函数

我指的不是mbstring函數,mbstring是php.ini裡的設置
Linux/Unix有環境編碼LANG的問題,但是Windows裡的php與Linux/Unix的環境設置不太一樣
但有關於Windows+php環境編碼設置的部份已檢查過了,大致是沒問題

還有!~依照小弟我的server環境,只要將strtolower函數改為mb_strtolower函數,就可正常
只是相關程序文件都已ZEND,無法自行修改,才會來此求助的,謝謝
不知茄子可否方便另外幫小弟修改,只要修改有關TAG文件,並重新ZEND,感激不盡
若因某種原因不方便的話也沒有關係,還是感謝茄子與各位高手的指導,謝謝

[ 本帖最后由 hks888 于 2007-7-25 13:48 编辑 ]
回复

使用道具 举报

qfli 发表于 2007-7-28 00:06:31 | 显示全部楼层
DZ的TAG没有这个问题
希望supesute可以修正这个BIG5字码的问题~
回复

使用道具 举报

tgwf 发表于 2007-7-29 22:20:07 | 显示全部楼层
不要用BIG5不就得了
一个国家搞那么多文字
难怪外国人常欺侮我们这一盘散沙
回复

使用道具 举报

安笛 发表于 2007-7-30 10:18:09 | 显示全部楼层

回复 #5 hks888 的帖子

请您PM我您的站点地址和管理员帐号  
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-11-13 13:57 , Processed in 0.041380 second(s), 16 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表