Board logo

主題: [Discuz] [討論]論壇由Big5轉UTF-8 [打印本頁]

發表人: Vic    時間: 2007-3-17 12:04 AM     主題: [討論]論壇由Big5轉UTF-8

話說剛想寫一個類似 google suggest的 關鍵字提示 功能....就給我遇上了 許大俠 "許功蓋"  

還有中文單字搜索的問題.....

因為現在db的編碼是big5.

很想將整個論壇 改為 UTF-8.....不過.....這應該是件累人的事吧. 5xxMB的data真不好轉.

有沒有人來分享一下經驗. @"@
發表人: lch2003    時間: 2007-3-17 11:43 AM

剛搜尋一下...
發現不少人都是用: (給你參考一下.)

CODE:
[Copy to clipboard]
function Fix_Backslash($org_str) {
   //if ( mysql_client_encoding() != "big5" ) return mysql_client_encoding();

   $tmp_length = strlen($org_str);

   for ( $tmp_i=0; $tmp_i<$tmp_length; $tmp_i++ ) {
      $ascii_str_a = substr($org_str, $tmp_i , 1);
      $ascii_str_b = substr($org_str, $tmp_i+1, 1);

      $ascii_value_a = ord($ascii_str_a);
      $ascii_value_b = ord($ascii_str_b);

      if ( $ascii_value_a > 128 ) {
         if ( $ascii_value_b == 92 ) {
            $org_str = substr($org_str, 0, $tmp_i+2) . substr($org_str,$tmp_i+3);
            $tmp_length = strlen($org_str);
         }
         $tmp_i++;
      }
   }

   $tmp_length = strlen($org_str);
   if ( substr($org_str, ($tmp_length-1), 1) == "\\\" ) $org_str .= chr(32);

   $org_str = str_replace("\\\0", "\ 0", $org_str);
   return $org_str;
}
Discuz! 本身不是有過濾?

[lch2003 在  2007-3-17 11:47 AM 作了最後編輯]
發表人: ithinkurdumb    時間: 2007-3-17 12:42 PM

I have done this a long long time ago (who uses Big5 now? ) to convert web-bbs systems, but I think there's a better way to do this nowadays. I think this might be faster than the method provided by lch2003 because the coversion is done in the database (not sure though).

We read every row from the database on a Big5 box, and store them into a new database with UTF8 settings (nchar / nvarchar datatype).

I think to move the forum to UTF-8 is a great thing. Cheer Vic!
發表人: badcat    時間: 2007-3-17 07:58 PM

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1


熊大終於有決心要轉成 UTF-8 啦?(歡呼!小弟等好久了!)

那下一步就是設多國語言論壇 (供各國網友討論),擴大論壇族群?Ex: 英文版區、日文版區、簡中版區、繁中版區、韓文版區... (野心太大了!就當小弟胡言亂語中...)

Big-5 轉 UTF-8 小弟第一個想到的是 ConvertZ。 http://alf-li.pcdiscuss.com/c_convertz.html
但若是批次轉檔,那 ConvertZ 姊妹作 ConCmd 可能是比較好的選擇!(可 命令列 批次轉檔) http://alf-li.pcdiscuss.com/c_concmd.html

P.S. 還有另一個 Uni2Me 都是同一位作者的傑作 http://alf-li.pcdiscuss.com/c_uni2me.html
可設定「僅轉字碼、不會對中文字進行簡繁轉換」的做法可能比較保險。


不過小弟對 Discuz! 並不是很了解,也許上述的東西幫不上忙也不一定,熊大看看就好!

____________________________________________________________

另外,熊大可以考慮將論壇減肥!
cecilyen 兄的 EM 或 BT 的 P2P 備份法,可供參考參考!

TWed2k - 站務問題專區 - TWed2k新功能 - 文章關鍵字 -- 既省資源又提高準確性
http://twed2k.org/viewthread.php?tid=157370&page=3#pid1286003
> badcat 說道:
> 11. 將過老的資料刪除,減低 TWed2k 的總資料量。大大減低搜尋的負擔。(這可能是最有效的一招!)
> 而過老的資料若真的捨不得消失,站大可以考慮用 eMule ed2k 或 BT 的方式釋出 (如 TWed2k.2006.Year.Database.rar),由 eMule 驢友或 BT 友自行分攤流量下載後搜尋之。(就用不到 TWed2k 的網站流量)
> 謝 TWed2k - cecilyen 兄無意間提供的巧思。
>
> > cecilyen 兄說道:
> > 不知有沒有可能把整個cyndi的database放上emule?
> > http://twed2k.org/viewthread.php?tid=156870&page=2#pid1280013

-----BEGIN PGP SIGNATURE-----
Version: PGP 8.1

iQA/AwUBRfvjFhl3yhBVZiD/EQL50ACfXGBEJv7E0pqPjrJFeVC7L/rgBNoAoPcf
s2ohoAPS0paTje8TlNqTrV5c
=EtjD
-----END PGP SIGNATURE-----


[badcat 在  2007-3-17 08:48 PM 作了最後編輯]
發表人: Vic    時間: 2007-3-18 12:53 AM

我在嘗試轉換db資料中. 根據下面的教學. 我可以將 big5內容成功轉為 utf-8....

http://blog.teatime.com.tw/post/1/48

但如果 文章內容包括 日文, or非 big5字體.....將被移走.

看來還需要更多的嘗試~ @@
發表人: ithinkurdumb    時間: 2007-3-18 09:47 AM

db裡面應該有很多文章內容是有用Unicode補完計畫這類產生的假日文吧?
這個轉起來就真的麻煩了...
因為好像每種implenment對應的Big5都不一樣?
所以要對照著轉回日文也很麻煩.
其實被移走 (還是補空白?) 也還ok吧?
畢竟數量不多.
發表人: Vic    時間: 2007-3-18 10:40 AM

經I兄提起.....我才想起論壇現在的日文都是 由 Unicode補完計畫加上的.

看到這一篇文章....

http://www.threesecond.info/v2/m ... amp;viewmode=thread

有人知道如果將這些 Unicode補完計畫產生的日文轉成UTF-8嗎?

我是想盡力看能否依靠 系統來做轉換. 真的不行才手動處理.

畢竟動漫, 與18 AMINE等區的"日文"主題還不少. @@
發表人: badcat    時間: 2007-3-18 11:57 AM

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1


從熊大的回應當中,小弟知道 Discuz! 應該是超出小弟的理解範圍。(唉~~)


不過小弟還是就字碼的使用習慣來討論。


1. 在 Windows 底下,不要灌 Unicode 補完計畫,因為很方便,但「不相容」,沒有安裝的人看不到。而安裝的人在由 Big-5 日文轉成 Unicode 日文時會有不相容的問題。

2. 在論壇中建議使用者用「中國海字集」來看 Big-5 日文,至少 96% 以上的 Big-5 日文可以正常顯示。因為它只是個顯示字型,所以不會有編碼上問題。
by 無聊人的無聊故事 - http://www.chweng.idv.tw/downloads/ChinaSea.exe

3. 使用者由 Big-5 日文轉換成 Unicode 日文時,建議使用者用 ConvertZ,可正確互轉 Big-5 日文 <-> Unicode 日文字。
ConvertZ。 http://alf-li.pcdiscuss.com/c_convertz.html
TWed2k - 軟體求助討論區 - [問題]求 日文漢字&中文 互轉的工具
http://twed2k.org/redirect.php?t ... o=lastpost#lastpost

4. 若論壇中已使用 UTF-8,慢慢在論壇中淘汰 Big-5 日文。
Big-5 日文在 UTF-8 中仍能顯示,只要有裝 Unicode 補完計畫或「中國海字集」(建議裝這個!)
等到 Big-5 日文淘汰的差不多了,就建議使用者直接用 Unicode 日文。這樣既不用靠 ConvertZ 轉換 (IE 的剪貼簿即可自動做 Unicode 轉換),也不用裝 Unicode 補完計畫或「中國海字集」。(用不到了!)



其實 Unicode 補完計劃的 Big-5 日文是承襲「中國海字集」的 Big-5 日文而來,故能包含 中國海 的 Big-5 日文。
後來 Unicode 補完計劃又新增了些 ANSI Big-5 日文的字碼定義,故能顯示的 Big-5 日文較多一些,但也造成一點混亂。(畢竟各家對 ANSI 同一字碼的顯示定義,不如 Unicode 統一。)
但說穿了 Unicode 補完計劃還是為了解決 ANSI Big-5 日文轉 Unicode 日文的問題 (如同 MS 的 Applocate),並不算真正的 Unicode 程式。

關於 Unicode 補完計劃所造成的問題,「無聊人的無聊故事」的網站中有略為提到,用 Google 查也一大堆。
中國海字集與 Unicode 補完計劃(Unicode-At-Once, UAO)- 無聊人的無聊故事
http://blog.chweng.idv.tw/archives/86/
http://blog.chweng.idv.tw/archives/87/


等到大家都用 Unicode 後 (程式、論壇),那 Unicode 補完計劃或「中國海字集」也就成為了歷史。不過可能要很久很久.. 這段陣痛期大家只好慢慢的想辦法渡過了!(熊大您現在也正在過! 辛苦啦!)


P.S. 想用 Unicode 補完計劃的朋友,想用就用吧!畢竟東西是給需要的人用的,您自己方便就好!(小弟並沒有要攻詰的意思)
但 Unicode 補完計劃並不能徹底解決 Unicode 的問題,還是用純 Unicode 的 程式 或 論壇 才是長久之計 (Ex: eMule 0.47c 就是純 Unicode 程式,Google 就是 Unicode 化的網站)


從早期 8 位元 的中文電腦一路走來,中文的混亂編碼就一直沒有停過,現在有 Unicode 的字碼統一,雖然 Unicode 不一定是最完善,但至少是最接近全球化的需求。


-----BEGIN PGP SIGNATURE-----
Version: PGP 8.1

iQA/AwUBRfy5zRl3yhBVZiD/EQLTxwCgyHbzyV1/+G3luzStdLpyMUwWx24AnA0u
nqGGTfVOmS/S/h+RWv9fjY9t
=a64r
-----END PGP SIGNATURE-----


[badcat 在  2007-3-18 12:03 PM 作了最後編輯]
發表人: dayi    時間: 2007-3-18 02:49 PM

unicode補完計畫的字集和現行的Unicode不完全相容
所以這方面可能無救了

至於論壇系統要轉UTF-8的話
資料庫可以用iconv去轉
web頁面可能要再測試看看
發表人: badcat    時間: 2007-3-18 04:39 PM

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1


找到兩個網址,似乎剛好討論到熊大的問題,請參考看看!

PHPNuke utf-8 中文測試網 - PNUCC - EzPage
裏面講到很多 UTF-8 和 網站 的問題

utf-8 轉檔小工具 - PHPNuke utf-8 中文測試網 - PNUCC - EzPage
http://www.aman.38.com/phpnuke/m ... menu=130&pid=99
http://aman.38.com/phpnuke/modules.php?name=EzPage&pid=99
(這兩個同一內容)

把 gb2312或big5 轉為utf-8 - PHPNuke utf-8 中文測試網 - PNUCC Forums
http://aman.38.com/phpnuke/modul ... topic&t=130#508
-----BEGIN PGP SIGNATURE-----
Version: PGP 8.1

iQA/AwUBRfz6YRl3yhBVZiD/EQLtJwCdE4nVjfp6Tpc0rZDUmYmnXl31dsEAoPKx
2v6QL+4RDKym/Z0bNz6X06qB
=rjJf
-----END PGP SIGNATURE-----

發表人: steven211    時間: 2007-3-19 08:20 PM

沒錯,
用unicode補完的日文一定會有問題,
能想到的辦法大概是把table匯到一個excel中然後另一欄把他用Unicode 日文鍵入
後把原本的那欄整個取代掉後再匯回database...(唉超大工程的....)
說實在身為一個程式設計師也常常被big 5 搞到一個頭兩個大,
還是轉unicode是一勞永逸的方式,
加油啦^^...
看能不能找到會日文的志工幫忙一下,做轉換文章的動作....
附帶一提,
印像中ConvertZ 不是只能轉big5中文->unicode中文
有錯的話指正一下3Q...
發表人: mocaca0918    時間: 2007-3-19 08:31 PM

可以轉日文,不過要設定
剛看了一下,如果用big5→shift-JIS→Unicode不知道可不可行?
發表人: ithinkurdumb    時間: 2007-3-19 10:42 PM

Shift-JIS要轉UTF-8是一定沒問題.
我覺得麻煩的還是如何把各種亂七八糟的假日文轉成真日文.
因為像Unicode-at-on和其他的假日文用的Big5又是不同的...




歡迎光臨 TWed2k (http://twed2k.org/) Powered by Discuz! 4.1.0