廣告廣告
  加入我的最愛 設為首頁 風格修改
首頁 首尾
 手機版   訂閱   地圖  簡體 
您是第 5411 個閱讀者
 
發表文章 發表投票 回覆文章
  可列印版   加為IE收藏   收藏主題   上一主題 | 下一主題   
Qoo 手機 會員卡
數位造型
個人文章 個人相簿 個人日記 個人地圖
頭銜:超人超人

級別: 副版主 該用戶目前不上站
版區: 星僑五術軟體
推文 x22 鮮花 x126
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片
推文 x0
[SQL][教學] 關於 MySQL 4.1 以上版本之問題收集
A MySQL 4.1 Story
http://jjgod.3322.org/2005/...l-41-story/

MySQL升級5.0與UTF-8之相關解決方法
http://blog.leolo.cc.../06/134/

Mysql: latin1 資料庫和 table 轉成 UTF8 (以 PHP 來轉換吧)
http://blog.sikazozo.org/index.php?/archiv...table-UTF8-PHP.html

待續..


[ 此文章被Qoo在2007-02-26 16:14重新編輯 ]


獻花 x0 回到頂端 [樓 主] From:臺灣新世紀資通股份有限公司 | Posted:2007-02-26 10:24 |
Qoo 手機 會員卡
數位造型
個人文章 個人相簿 個人日記 個人地圖
頭銜:超人超人

級別: 副版主 該用戶目前不上站
版區: 星僑五術軟體
推文 x22 鮮花 x126
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

由於本來都是使用 MySQL 4.0 的為主要Database..
但是周六在更新我的 Server 的時候(我用 Mandrake Cooker 作為 Server)...
發現,Mandrake 10.2 以後似乎就沒有提供 MySQL 4.0.x 了!!...

所以伺服器在無意間,自動升級到 MySQL 4.1..

由於在 MySQL 4.1 以後,伺服器支援 Database Charset 的資料.但是.....
直接從 MySQL 4.0 升級上來的,所有內容的編碼不變化,但是Database 的編碼設定則是跑成 latin1 的格式....
這樣的話,在 dump資料時沒有指定正確的 charset 或是 mysql client charset 不同的時候,會發生內容錯誤的情況....(也就是很多人說會看到一堆 ??,或是一堆亂碼...)

或許在 client 跟 server 的 charset 都設定唯一樣的時候,取出的資料不會有錯誤(因為 mysql 不會在中間轉碼...)

目前我的做法:
我計劃將資料庫設定編碼都設定為 utf8 ,也就是進入資料庫後的資料都是以 utf8 方式存檔.

先利用 mysqldump --default-character-set=latin1 將資料進行 Dump ...
如此 dump 出來的資料會是正常的..
然後利用編輯器 vim or gedit or ultraedit 等....
修改dump出來的檔案.

將 每個Table 的 Default Charset 改為 utf8 .
同時在 Dump 的資料檔案最前面加上.
SET NAMES utf8;
SET CHARACTER_SET_CLIENT=utf8;
SET CHARACTER_SET_RESULTS=utf8;

接著 若你原來的資料是以 utf8 儲存,則不用變動.
若用 big5 存入資料庫的,請利用 iconv -c -f big5 -t utf8 MysqDumpFile.sql 的方式,把內容的編碼轉換成為 utf8 格式.

接著..就把資料表 import 進入資料庫看看囉....
mysql -u root -p DatabaseName < MysqlDumpFile.utf8.sql

註.不建議各位 client Charset = big5 去匯入.
因為有可能會遇到內容有 slashes 的問題(例如許功蓋).一律轉為 utf8 來 Import 進資料庫會比較沒有問題.

當資料表都是 utf8 格式後. 你的 php 程式還是跑 big5 阿...這時候該怎麼辦呢?...

只要在連線資料庫後立刻執行下面的SQL語法,設定 client charset ....
SET NAMES big5;
SET CHARACTER_SET_CLIENT=big5;
SET CHARACTER_SET_RESULTS=big5;

這樣取出跟存入的資料就會自動轉碼...


轉載自 http://phorum.study-area.org/viewtopic...light=MySQL+4.0.x Darkhero darhkero@v-dark.net


[ 此文章被Qoo在2007-02-26 15:40重新編輯 ]



獻花 x0 回到頂端 [1 樓] From:臺灣新世紀資通股份有限公司 | Posted:2007-02-26 13:10 |
Qoo 手機 會員卡
數位造型
個人文章 個人相簿 個人日記 個人地圖
頭銜:超人超人

級別: 副版主 該用戶目前不上站
版區: 星僑五術軟體
推文 x22 鮮花 x126
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

****** 網 站 全 面 採 用 UTF-8 方法. ******

1. 用 vi /etc/httpd/conf/httpd.conf 設定Apache中的語系為 (記得restart)
AddDefaultCharset UTF-8

2. 用 vi /etc/php.ini 設定php中的語系為 (記得restart)
default_charset = "utf-8"

3. 用 vi /etc/my.cnf 設定MySQL中的語系為 (記得restart)
[mysqld]
init_connect='SET NAMES utf8'
default-character-set=utf8
[client]
default-character-set = utf8

4. 建立資料庫時選擇語系: (記得清除DB Cache)
DROP DATABASE IF EXISTS `aa`;
CREATE DATABASE `aa` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
USE `aa`;

CREATE TABLE IF NOT EXISTS `aat` (
`id` char(1) NOT NULL default Ƈ',
`myStr` varchar(200) default NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

5. 用UltraEdit(v11.20a版) 轉換所有ANSI格式的php檔案轉化為UTF-8格式:
File --> Conversions --> ASCII to UTF-8 (Unicoding Editing)
( 在UltraEdit中按Advanced --> configuration --> File Handling
--> Unicode/UTF-8 Detection --> 剔選Auto detect utf-8 files )
如有需要時,可執行Remove BOM.php. 當用WinXP的Notepad將php檔由ANSI轉為UTF-8時,
因檔頭有BOM,會引起排版問題,故必須移除,執行Remove BOM.php即可自動移除.
Remove BOM.php可由以下網址下載:
http://www.hoyo.idv.tw/hoyoweb/document/vi...r=hoyo&status=view

6. 在php檔中必須加入:
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head><body>

7. 在連接DB的檔中必須加入3行mysql_query才ok:
$host="localhost"; $DBname="aa";
$user= "root"; $passwd = "";
$link = mysql_connect($host,$user,$passwd) or die ("Fail");
$db = mysql_select_db($DBname, $link) or die ("Fail");
// 要在真正query DB取出資料前,加入以下3行
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER_SET_CLIENT=utf8");
mysql_query("SET CHARACTER_SET_RESULTS=utf8");
$sql = "select * from aat where crid=Ƈ'";
$rows = mysql_query($sql);

8. 在php檔中, 如有需要須注意: [Optional]
運用htmlentities和htmlspecialchars時,要似如下:
$chars = htmlentities($chars,ENT_QUOTES,"UTF-8");
$chars = htmlspecialchars($chars,ENT_QUOTES,"UTF-8");
並且在顯示前要用
$chars = html_entity_decode($chars,ENT_QUOTES,"UTF8");
如有用過addslashes()或mysql_real_escape_string()記得用以下:
$chars = stripslashes($chars);
如有需要可以用以下function將不同編碼轉換:
$chars = iconv('Big5','UTF-8',$chars); //由Big5轉為UTF-8

本文轉載自 http://phorum.study-area.or...php?t=36484 yes298



獻花 x0 回到頂端 [2 樓] From:臺灣新世紀資通股份有限公司 | Posted:2007-02-26 15:25 |
Qoo 手機 會員卡
數位造型
個人文章 個人相簿 個人日記 個人地圖
頭銜:超人超人

級別: 副版主 該用戶目前不上站
版區: 星僑五術軟體
推文 x22 鮮花 x126
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

參閱本文章所寫的步驟,我的處理結果為:

1.所使用的檔案需為uft-8格式;

2.在meta需設定;
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

3.在php的檔頭要加
header('Content-type: text/html; charset=utf-8');
header('Vary: Accept-Language');

4.在mysql的連線之後要加
mysql_query("SET NAMES utf8",$connect);
mysql_query("SET CHARACTER_SET_CLIENT=utf8",$connect);
mysql_query("SET CHARACTER_SET_RESULTS=utf8",$connect);

5.在create table時,要指定字元集
create table tb_manager (
i_manager_id int NOT NULL auto_increment,
i_udate int(15),
i_mdate int(15),
)TYPE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

至於httpd.conf,my.conf,php.ini等,則使用default 就可以了;

本文轉載自 http://phorum.study-area.or...php?t=36484 梁晉魁



獻花 x0 回到頂端 [3 樓] From:臺灣新世紀資通股份有限公司 | Posted:2007-02-26 15:46 |

首頁  發表文章 發表投票 回覆文章
Powered by PHPWind v1.3.6
Copyright © 2003-04 PHPWind
Processed in 0.024151 second(s),query:16 Gzip disabled
本站由 瀛睿律師事務所 擔任常年法律顧問 | 免責聲明 | 本網站已依台灣網站內容分級規定處理 | 連絡我們 | 訪客留言