PHP5 網管實驗室 2007 | 加入會員
PHP5 線上討論區
 
 線上討論區 繁/簡體
 
  下載 下載 我的訊息 部落格 線上討論區 文件搜尋 線上討論區 線上討論 我的訊息 我的訊息 會員服務 會員服務 回首頁 回首頁 
  [Download] [ Blog ] [ Search ] [ Forum ] [ PM ] [ Member ] [ HOME ]
 
  文章主目錄 :: PHP程式設計 :: php進階問題  
作 者:ileadu
時 間:2004-11-25 19:16

換相片囉!!
主旨:請教貴站在UTF8下轉繁簡體的方法...

我發現貴站轉簡體後 瀏覽器編碼仍為UTF-8的狀態
請問一下如何做到?
因為我在網路上找到的 大都是BIG5轉GB2312
但因為我現在已經改用UTF-8了 所以那個方法我不能用

請各位大大賜教
或是有無教學網站 可讓小弟參觀學習
感激不盡



--
 
 
作 者:總理大臣
時 間:2004-11-26 :00:06:39

換相片囉!!
整個網站如果是utf8是沒有這種問題.
iconv(utf8 ->gb2312->utf8)
這樣就變成簡體又是utf8了呀^ ^

但在帳號資料上可能會有錯亂的問題.

--
回到頂端  
 
作 者:ileadu
時 間:2004-11-26 :00:56:36

換相片囉!!
不 我發現..iconv 無法把繁中字體 變簡體字...
只能轉換瀏覽器的編碼而已...
應該有還某種程序...把UTF-8內的與繁中同的碼..
轉成在UTF-8裡簡中的碼....

不知道這樣說 對不對 ^^

--
回到頂端  
 
作 者:ileadu
時 間:2004-11-26 :00:58:34

換相片囉!!
測試一下 簡體字
龙剑传あ
龍劍傳あ

--
回到頂端  
 
作 者:總理大臣
時 間:2004-11-26 :02:06:20

換相片囉!!
是的.
在前一個版本中.版本切換是用了
big5->gb

現在是
u8->big5

簡體 ->
utf8->big5->gb->utf8

繁:
健康 - 時尚 - 電子報 - 汽車


娱乐·星光快线·电影·音乐·星座·游戏·笑话


ショッピング - オークション - チケット - 旅行 - 出張 - 宅配 - 決済

검색드라마 비천무 · 박건형 · 겨울스포츠 · 대학 취업률

因為又轉成big5形成gb碼。
有些其他國的字就不行了。
︿ ︿|||

不過繁體的倒是正常的。

--
回到頂端  
 
作 者:ileadu
時 間:2004-11-26 :02:19:19

換相片囉!!
這麼晚了 還回覆我...
我睡前 想到 又再測了一下妳之前說的方法
果然還是不行...

妳剛剛說的那個 ...轉換步驟真是有點麻煩...
而且會導致不正確情形產生
若能知道UTF-8 內 繁簡體的對應關係
而只轉換繁簡體的話 就不會出現亂碼了...

還是很感謝妳.. 我會再找找看有無方法的...

--
回到頂端  
 
作 者:ileadu
時 間:2004-11-26 :02:25:07

換相片囉!!
像是 ALiBaBar 這樣的繁簡互轉的 IE 小外掛
不知道您有沒有用過
我剛剛在貴站的這個網頁上試了一下..
那個外掛是不會讓日文與韓文發生錯誤的...

我在想 他應該是用我講的方法吧...


但我還是沒有 utf8 內的繁簡對照表... >_<

--
回到頂端  
 
作 者:總理大臣
時 間:2004-11-26 :02:28:04

換相片囉!!
目前轉換器一般都是全部轉.
因為他不可能會一個一個字的查,這樣完全沒有效能可言.
所以這樣的型式不太可能達到.

因為簡繁轉並不是同一個碼而是一個map位置.
真正最好的還是只有版面轉而內文(資料,資料庫)是不做轉換的.
使用者輸入什麼就是什麼.
這樣應該才是比較好的方案.

這才叫多國語系嘛.^ ^|||


--
回到頂端  
 
作 者:ileadu
時 間:2004-11-26 :09:59:01

換相片囉!!
嗯嗯 但我還是覺得這樣的多國語系 還是只有做到90%
若是大陸人過來看你的網站... 而用簡體化的話
你網站內日文 與韓文部分 都會變亂碼...
而簡體部分 似乎轉換上仍有些許問題...

--
回到頂端  
 
作 者:總理大臣
時 間:2004-11-26 :10:13:00

換相片囉!!
因為簡體字集裡面沒有那些字碼.
所以轉的時候會有字不見而產生問號.

我覺得以多轉少一定會有問題的.
那就又要修補了, 那才真的是吃力.


--
回到頂端  
 
作 者:ileadu
時 間:2004-11-26 :12:26:47

換相片囉!!
有無簡繁用語的對照
像是雷射 在大陸叫激光
硬碟 在大陸叫硬盤


記得之前好像在哪看過這樣的對照文件
但我已找不到了

各位大大能否幫找一下...thx

--
回到頂端  
 
作 者:ileadu
時 間:2004-11-28 :18:04:09

換相片囉!!
測試一下 幾個有問題的字...
在轉簡體時可能會發生缺字的情形
伕杗沬玥抆沘枓劻圄

--
回到頂端  
 
作 者:總理大臣
時 間:2004-11-28 :18:53:00

換相片囉!!
其實漢字目前許多的國家都在用,
除了中國的簡體字,還有台灣的大五碼.
香港也發展了自己的語系.

其中大華語系中還有日韓和越語幾個語系,
這些漢字怎麼轉呢。

要能全部找到也還真是不容易。


--
回到頂端  
 
作 者:ileadu
時 間:2004-11-29 :20:25:06

換相片囉!!
...直看剛剛才看出
你的圖 原來是在比一二三四到「死」
之前都沒注意到 以為只是隨便的pose


還有你們都沒發現.. 回覆文章時沒先登入
而在po 文章後登入 會發生些微錯誤 就是有登入了
但文章並沒有被存入....

--
回到頂端  
 
作 者:ileadu
時 間:2005-01-03 :00:15:04

換相片囉!!
再測一次 活 這字 看會不會有問題

--
回到頂端  
 
作 者:Monster
時 間:2005-02-05 :00:12:18

換相片囉!!
iconv(utf8 ->gb2312->utf8)

这个具体如何实现啊? 教教

--
回到頂端  
 
作 者:sparkler
時 間:2005-02-06 :18:32:20

換相片囉!!
<?php
if(false){
?>
<meta http-equiv="Content-Type" content="text/html; charset=big5">
<meta http-equiv="Content-Language" content="zh-tw">
<?php
}

class PIconv{

var $fpB2G = NULL;
var $fpG2B = NULL;

function PIconv(){
}

function Free(){
if(isset($this->fpB2G)){
fclose($this->fpB2G);
$this->fpB2G = NULL;
}
if(isset($this->fpG2B)){
fclose($this->fpG2B);
$this->fpG2B = NULL;
}
unset($this);
}

function FillBnG(&$AstrBig5,&$AstrGB2312,$AdbBig5 = NULL,$AdbGB2312 = NULL){
if((string)$AstrBig5 != ''
&& (string)$AstrGB2312 == ''){
$AstrGB2312 = $this->Big5ToGB2312($AstrBig5);
}else if((string)$AstrGB2312 != ''
&& (string)$AstrBig5 == ''){
$AstrBig5 = $this->GB2312ToBig5($AstrGB2312);
}else if((string)$AstrBig5 != ''
&& (string)$AstrGB2312 != ''){
if("$AdbBig5" != '' && (string)$AstrBig5 != "$AdbBig5" && "$AdbGB2312" != '' && (string)$AstrGB2312 != "$AdbGB2312"){
}else if("$AdbBig5" != '' && (string)$AstrBig5 != "$AdbBig5"){
$AstrGB2312 = $this->Big5ToGB2312($AstrBig5);
}else if("$AdbGB2312" != '' && (string)$AstrGB2312 != "$AdbGB2312"){
$AstrBig5 = $this->GB2312ToBig5($AstrGB2312);
}
}
}

function Big5ToGB2312($Astr){
Global $Application;
if($Application->IsUTF8()){
$big5str = $this->IConv('UTF-8','Big5',$Astr);
if($big5str === false) return '';
$gbstr = $this->B2G($big5str);
$Areturnstr = $this->IConv('GB2312','UTF-8',$gbstr);
if($Areturnstr === false) return '';
}else{
$Areturnstr = $this->B2G($Astr);
}
return $Areturnstr;
}

function GB2312ToBig5($Astr){
Global $Application;
if($Application->IsUTF8()){
$gbstr = $this->IConv('UTF-8','GB2312',$Astr);
if($gbstr === false) return '';
$big5str = $this->G2B($gbstr);
$Areturnstr = $this->IConv('Big5','UTF-8',$big5str);
if($Areturnstr === false) return '';
}else{
$Areturnstr = $this->G2B($Astr);
}
return $Areturnstr;
}

function IConv($aacp1,$Aacp2,$Astr1){
if("$aacp1" != 'UTF-8'){
$Astr2 = @iconv($aacp1,$Aacp2,$Astr1);
return $Astr2;
}
$str2 = '';
$j = strlen($Astr1);
for($i = 0;$i < $j;$i++){
$ascstr = substr($Astr1,$i,1);
$ordasc = ord($ascstr);
if(($ordasc >= 240) && ($ordasc <= 255)){
$l = 4;
}else if(($ordasc >= 224) && ($ordasc <= 239)){
$l = 3;
}else if(($ordasc >= 192) && ($ordasc <= 223)){
$l = 2;
}else{
$l = 1;
}
$asc1 = substr($Astr1,$i,$l);
$asc2 = @iconv($aacp1,$Aacp2,$asc1);
if("$asc2" == ''){
$asc2 = '';
for($k = 0;$k < $l;$k++){
$asc2 .= '?';
}
}
$str2 .= $asc2;
$i += ($l - 1);
}
return $str2;
}

function B2G($Astr){
Global $Application;
if(!$this->fpB2G) $this->fpB2G = fopen($Application->PhpObjectDir.'iconv/big5togb.dat','r');
$max = strlen($Astr);
for($i = 0;$i < $max;$i++){
$h = ord($Astr[$i]);
if((($i + 1) < $max) && ($h >= 160)){
$l = ord($Astr[$i + 1]);
if ($h == 161 && $l == 64) {
$gb = ' ';
} else {
fseek($this->fpB2G,($h - 160) * 510 + ($l - 1) * 2);
$gb = fread($this->fpB2G,2);
}
$Astr[$i] = $gb[0];
$Astr[$i + 1] = $gb[1];
$i++;
}
}
return $Astr;
}

function G2B($Astr){
Global $Application;
if(!$this->fpG2B) $this->fpG2B = fopen($Application->PhpObjectDir.'iconv/gb2big5.dat','r');
$max = strlen($Astr);
for ($i = 0;$i < $max;$i++) {
$h = ord($Astr[$i]);
if((($i + 1)) < $max && ($h >= 160)) {
$l = ord($Astr[$i + 1]);
if ($h == 161 && $l == 64) {
$gb = ' ';
} else {
fseek($this->fpG2B,($h - 160) * 510 + ($l - 1) * 2);
$gb = fread($this->fpG2B,2);
}
$Astr[$i] = $gb[0];
$Astr[$i + 1] = $gb[1];
$i++;
}
}
return $Astr;
}
}

sparklerchen

--
回到頂端  
 
作 者:sparkler
時 間:2005-02-06 :18:39:55

換相片囉!!
樓上的空白又被吃掉了ㄝ

總大改一下啦, 這麼久都沒進步... 太混啦
$str = str_replace("\n"," ".'<br/>',$str);
$str = str_replace(' ','  ',$str);

sparklerchen

--
回到頂端  
 
作 者:sparkler
時 間:2005-02-06 :18:46:25

換相片囉!!
<> 等有轉,   沒還原又被代換掉啦
真是... 不方便 ^_^|||

只好打中文啦

換行代換成 空白和<br>
br 前空白不能省略

還有雙空白代換成 空白字元和 

sparklerchen

--
回到頂端  
 
作 者:sparkler
時 間:2005-02-06 :18:48:00

換相片囉!!
& nbsp; 也錯

... 無言以對
sparklerchen

--
回到頂端  
 
作 者:yes298
時 間:2006-01-13 :18:21:18

換相片囉!!
非分感謝sparkler 的無私分享,
只可惜缺少源碼中所需的big5togb.dat 和 big5togb.dat 兩檔,

請求將以上源碼儲為檔連同缺失的2個dat檔一起上傳給大伙, 可以嗎

Thanks so much!!!!

--
回到頂端  
 
作 者:布衣卿相
時 間:2008-09-10 :06:35:49

換相片囉!!
ツ┺ 因為ωǒ是ル眞de動了心, 找

--
回到頂端  
 

.: 回 覆 訊 息 :.
*內容:

回覆: 有人回覆時請以Email通知我:
圖示: img img img img img img img img img img img img img
 
 










網站地圖 廣告刊登 合作提案 關於作者 連絡我們 設為首頁  
   
     程式管理: jacch (jack chen)PHP5網管實驗室版權所有
     2001 - 2007 copyright by jacch . All rights reserved.. counter