|
論壇壇主
     
經驗值: MAX
- UID
- 1
- 帖子
- 997
- 精華
- 11
- 積分
- 352
- 威望
- 4
- 金錢
- 7
- 人氣
- 24
- 魅力
- 0
|
1樓
大 中
小 發表於 24-8-2008 10:36 PM 只看該作者
分享MySQL和php採用UTF8的詳細方法
小弟幾天來給MySQL和php全面採用UTF8搞得
9 `, q$ ], J. a) B# ~頭昏腦脹, 現在總算搞清楚了, 成功轉換為UTF8.
4 A2 L& {& Q* d3 M4 g+ ]5 |論譠, 討論板, 圖片, 節日, 歷史, 香港, 討論區, 文章, 相片, 唱歌, 相簿, 聊天室, 吹水, 二手, 組織, 線上, 遊戲, 動作, 電影, 動漫, 音樂, 貼圖, 互動, Online, forum, chatroom, flash, php例如: 許 功 蓋 ?? ?? ?? ?? ?? ?? ??
3 t9 P% n0 D: x0 h幻想論壇這些字已完全問題了. 論譠, 討論板, 圖片, 節日, 歷史, 香港, 討論區, 文章, 相片, 唱歌, 相簿, 聊天室, 吹水, 二手, 組織, 線上, 遊戲, 動作, 電影, 動漫, 音樂, 貼圖, 互動, Online, forum, chatroom, flash, php' X3 ^, `$ n$ O0 B1 V3 Z8 m
現總結一下給大伙參考. [如需轉載,請注明出處]
9 y- @+ |: Y! A! ]3 ]forum.proita.com****** 網 站 全 面 採 用 UTF-8 方法. ******
8 c) [: X$ C: s7 D5 V) u, Y1 |香港人氣網遊討論區,以Online Game為主的多元化的論壇網站,同時設有交友系統、對戰系統、獨特網上電台等等。1. 用 vi /etc/httpd/conf/httpd.conf 設定Apache中的語系為:( (記得restart) 論譠, 討論板, 圖片, 節日, 歷史, 香港, 討論區, 文章, 相片, 唱歌, 相簿, 聊天室, 吹水, 二手, 組織, 線上, 遊戲, 動作, 電影, 動漫, 音樂, 貼圖, 互動, Online, forum, chatroom, flash, php8 w1 b& l9 h- `: W; q& s$ Q
AddDefaultCharset UTF-8
5 s7 |( \0 V4 O" pforum.proita.com2. 用 vi /etc/php.ini 設定php中的語系為:( (記得restart)
7 T) q/ M# z) v! T' S; Y幻想論壇 default_charset = "utf-8" 論譠, 討論板, 圖片, 節日, 歷史, 香港, 討論區, 文章, 相片, 唱歌, 相簿, 聊天室, 吹水, 二手, 組織, 線上, 遊戲, 動作, 電影, 動漫, 音樂, 貼圖, 互動, Online, forum, chatroom, flash, php4 n/ l; n: @% Q# [" w6 M( ]: U
3. 用 vi /etc/my.cnf 設定MySQL中的語系為:( (記得restart)
5 N, |& W. T' a/ f% e, `1 iforum.proita.com [mysqld] 論譠, 討論板, 圖片, 節日, 歷史, 香港, 討論區, 文章, 相片, 唱歌, 相簿, 聊天室, 吹水, 二手, 組織, 線上, 遊戲, 動作, 電影, 動漫, 音樂, 貼圖, 互動, Online, forum, chatroom, flash, php8 P( T4 U1 Y3 b# R& Q
init_connect='SET NAMES utf8'
2 O3 X0 a* D" F9 n default-character-set=utf8 香港人氣網遊討論區,以Online Game為主的多元化的論壇網站,同時設有交友系統、對戰系統、獨特網上電台等等。. d* ~9 O% x' ^# M- H
[client]
/ E# }. `7 k- I1 q, Z: t論譠, 討論板, 圖片, 節日, 歷史, 香港, 討論區, 文章, 相片, 唱歌, 相簿, 聊天室, 吹水, 二手, 組織, 線上, 遊戲, 動作, 電影, 動漫, 音樂, 貼圖, 互動, Online, forum, chatroom, flash, php default-character-set = utf8
- D) T0 S( J4 V/ E7 G( e" w4. 建立資料庫時選擇語系: (記得清除DB Cache) forum.proita.com' p. l6 U$ g# W5 Y6 z5 G, _0 I
DROP DATABASE IF EXISTS `aa`; 論譠, 討論板, 圖片, 節日, 歷史, 香港, 討論區, 文章, 相片, 唱歌, 相簿, 聊天室, 吹水, 二手, 組織, 線上, 遊戲, 動作, 電影, 動漫, 音樂, 貼圖, 互動, Online, forum, chatroom, flash, php" } Q! N: X( Q
CREATE DATABASE `aa` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci; 論譠, 討論板, 圖片, 節日, 歷史, 香港, 討論區, 文章, 相片, 唱歌, 相簿, 聊天室, 吹水, 二手, 組織, 線上, 遊戲, 動作, 電影, 動漫, 音樂, 貼圖, 互動, Online, forum, chatroom, flash, php7 I6 h: E$ O0 l, J- y- @
USE `aa`;
. C. n _7 S7 x, {; `: c) G# x3 B forum.proita.com/ Y0 j% [2 r8 Y' I. X* m& [
CREATE TABLE IF NOT EXISTS `aat` ( forum.proita.com4 u. R2 D, a6 A1 n2 g
`id` char(1) NOT NULL default '1',
. d0 [5 V2 P# F: l' K `myStr` varchar(200) default NULL, 論譠, 討論板, 圖片, 節日, 歷史, 香港, 討論區, 文章, 相片, 唱歌, 相簿, 聊天室, 吹水, 二手, 組織, 線上, 遊戲, 動作, 電影, 動漫, 音樂, 貼圖, 互動, Online, forum, chatroom, flash, php/ c( I: n4 L" m2 X$ x! e: c
PRIMARY KEY (`id`)
' E0 k1 M4 a' F4 v4 U; c論譠, 討論板, 圖片, 節日, 歷史, 香港, 討論區, 文章, 相片, 唱歌, 相簿, 聊天室, 吹水, 二手, 組織, 線上, 遊戲, 動作, 電影, 動漫, 音樂, 貼圖, 互動, Online, forum, chatroom, flash, php ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
7 [* q8 `. {8 M* v% Q6 A5. 用UltraEdit(v11.20a版) 轉換所有ANSI格式的php檔案轉化為UTF-8格式: 論譠, 討論板, 圖片, 節日, 歷史, 香港, 討論區, 文章, 相片, 唱歌, 相簿, 聊天室, 吹水, 二手, 組織, 線上, 遊戲, 動作, 電影, 動漫, 音樂, 貼圖, 互動, Online, forum, chatroom, flash, php+ @ \7 a5 b( @8 k, `
File --> Conversions --> ASCII to UTF-8 (Unicoding Editing)
; a$ g: w8 h+ Q9 Y香港人氣網遊討論區,以Online Game為主的多元化的論壇網站,同時設有交友系統、對戰系統、獨特網上電台等等。 ( 在UltraEdit中按Advanced --> configuration --> File Handling
' O- j+ \5 s! W --> Unicode/UTF-8 Detection --> 剔選Auto detect utf-8 files )
. r: H2 a9 M5 U! H( K. R8 H+ b 如有需要時,可執行Remove BOM.php. 當用WinXP的Notepad將php檔由ANSI轉為UTF-8時, ( C/ C$ K+ i# Y% N, ? v
因檔頭有BOM,會引起排版問題,故必須移除,執行Remove BOM.php即可自動移除.
( Y% q* N6 m/ }& e2 e4 w幻想論壇 Remove BOM.php可由以下網址下載: 香港人氣網遊討論區,以Online Game為主的多元化的論壇網站,同時設有交友系統、對戰系統、獨特網上電台等等。% T0 { q" I' A$ L: x
http://www.hoyo.idv.tw/hoyoweb/document/view.php?sid=13&author=hoyo&status=view香港人氣網遊討論區,以Online Game為主的多元化的論壇網站,同時設有交友系統、對戰系統、獨特網上電台等等。" i7 l, \- H: P% n' p8 k! K; M! S
6. 在php檔中必須加入:
; E' j: e3 s6 C+ h論譠, 討論板, 圖片, 節日, 歷史, 香港, 討論區, 文章, 相片, 唱歌, 相簿, 聊天室, 吹水, 二手, 組織, 線上, 遊戲, 動作, 電影, 動漫, 音樂, 貼圖, 互動, Online, forum, chatroom, flash, php <html><head> 幻想論壇) H e7 M$ Z4 y' {
<meta http-equiv="Content-Type" c>
, R/ `+ \7 q. R </head><body> ' b+ G) K0 a8 K$ F
7. 在連接DB的檔中必須加入3行mysql_query才ok: forum.proita.com9 i* H# v. y; x) }
$host="localhost"; $DBname="aa";
4 \' h/ a3 H3 ~9 v# A香港人氣網遊討論區,以Online Game為主的多元化的論壇網站,同時設有交友系統、對戰系統、獨特網上電台等等。 $user= "root"; $passwd = "";
* I# [( c" E+ Q- i& X9 H香港人氣網遊討論區,以Online Game為主的多元化的論壇網站,同時設有交友系統、對戰系統、獨特網上電台等等。 $link = mysql_connect($host,$user,$passwd) or die ("Fail"); }- {3 u/ j& C
$db = mysql_select_db($DBname, $link) or die ("Fail");
: o$ O4 Y+ ^+ T$ zforum.proita.com // 要在真正query DB取出資料前,加入以下3行 幻想論壇1 Z# U9 |' |! L1 z, u
mysql_query("SET NAMES 'utf8'"); 香港人氣網遊討論區,以Online Game為主的多元化的論壇網站,同時設有交友系統、對戰系統、獨特網上電台等等。5 d' O; w7 V3 H
mysql_query("SET CHARACTER_SET_CLIENT=utf8"); , Z: z' C- ], H+ Y# n( N6 m/ a8 R
mysql_query("SET CHARACTER_SET_RESULTS=utf8");
4 Y* t1 r' x6 X3 _7 Aforum.proita.com $sql = "select * from aat where crid='1'"; @$ V" B2 u8 D: W
$rows = mysql_query($sql); forum.proita.com, d5 t0 A L3 k+ T& D' g- S
8. 在php檔中, 如有需要須注意: [Optional]
& C# c' Y% x A+ F& y5 v 運用htmlentities和htmlspecialchars時,要似如下:
, s+ Z; w0 Y2 K) ~" Q( x# w香港人氣網遊討論區,以Online Game為主的多元化的論壇網站,同時設有交友系統、對戰系統、獨特網上電台等等。 $chars = htmlentities($chars,ENT_QUOTES,"UTF-8"); 香港人氣網遊討論區,以Online Game為主的多元化的論壇網站,同時設有交友系統、對戰系統、獨特網上電台等等。 H. A d2 `: d- J8 @4 c! K
$chars = htmlspecialchars($chars,ENT_QUOTES,"UTF-8");
' w* j, @. v; j( Q6 E論譠, 討論板, 圖片, 節日, 歷史, 香港, 討論區, 文章, 相片, 唱歌, 相簿, 聊天室, 吹水, 二手, 組織, 線上, 遊戲, 動作, 電影, 動漫, 音樂, 貼圖, 互動, Online, forum, chatroom, flash, php 並且在顯示前要用
/ l0 W# A: T3 v5 Q% _; P $chars = html_entity_decode($chars,ENT_QUOTES,"UTF8"); forum.proita.com8 Z' Y+ _' X. v1 o
如有用過addslashes()或mysql_real_escape_string()記得用以下: ( n. x% l. N5 [/ M1 g; b/ q
$chars = stripslashes($chars); $ V6 ^4 _9 `/ M ?. q0 L, j
如有需要可以用以下function將不同編碼轉換: 論譠, 討論板, 圖片, 節日, 歷史, 香港, 討論區, 文章, 相片, 唱歌, 相簿, 聊天室, 吹水, 二手, 組織, 線上, 遊戲, 動作, 電影, 動漫, 音樂, 貼圖, 互動, Online, forum, chatroom, flash, php/ ]9 a# k# N- _+ z
$chars = iconv('Big5','UTF-8',$chars); //由Big5轉為UTF-8
Love (+.[____]·:·)
|