广告广告
  加入我的最爱 设为首页 风格修改
首页 首尾
 手机版   订阅   地图  繁体 
您是第 5582 个阅读者
 
发表文章 发表投票 回覆文章
  可列印版   加为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.068140 second(s),query:16 Gzip disabled
本站由 瀛睿律师事务所 担任常年法律顾问 | 免责声明 | 本网站已依台湾网站内容分级规定处理 | 连络我们 | 访客留言