用php建mysql表時怎麼設定表的編碼為gb

2022-03-07 11:04:47 字數 5758 閱讀 6935

1樓:宇宙大師之一

可以使用 default charset=gb2312 設定編碼。

例如:建立一個名字為table的表,編碼為gb2312。

create table if not exists `table` (

`id` int(11) not null auto_increment,

`title` varchar(255) not null,`contents` text not null,primary key (`id`)

) engine=myisam default charset=gb2312 auto_increment=1 ;

建議最好使用utf8編碼,這樣相容性更好。

2樓:匿名使用者

mysql_set_charset('gb2312',$link1);

mysql的編碼是gb2312,php檔案和瀏覽器的編碼都設定為gbk,怎麼輸入的中文從

3樓:匿名使用者

快速更改的方法,找到瀏覽的編碼選擇utf-9或者gbk就可以

4樓:匿名使用者

max_allowed_packet = 64m[mysql]

disable-auto-rehash #允許通過tab鍵提示default-character-set = utf8connect-timeout = 3

5樓:片面

html標籤指定gb2312

6樓:匿名使用者

html標籤或者header中也要制定gbk編碼

7樓:匿名使用者

在瀏覽器上改一下編碼啊

如何更改mysql資料庫編碼為utf-8或者gb2312?

8樓:田憐

用alter語句. 如果資料庫已經有資料表了, 那每個表都要修改. (修改資料庫的字符集不會改變原有資料表的字符集)

.關閉mysql服務(以下為命令列中執行)view plaincopy

service mysql stop

修改my.ini檔案加上default-character-set=gb2312設定資料庫字符集alterdatabase da_... 故修改資料庫編碼為utf-8。

1.使用root賬號,開啟mysql的配置文... 有時候 需要將mysql...

進入mysql的安裝目錄,找到my-default.ini或者my.ini配置檔案

用php向mysql資料庫中寫入中文漢字為什麼顯示不出來?我已經設定成gb2312了

9樓:匿名使用者

php與資料庫的編碼應一致

1. 修改mysql配置檔案my.ini或my.cnf,mysql最好用utf8編碼

[mysql]

default-character-set=utf8[mysqld]

default-character-set=utf8default-storage-engine=myisam在[mysqld]下加入:

default-collation=utf8_bininit_connect='set names utf8'

2. 在需要做資料庫操作的php程式前加mysql_query("set names

'編碼'");,編碼和php編碼一致,如果php編碼是gb2312那mysql編碼就是gb2312,如果是utf-8那mysql編碼就是 utf8,這樣插入或檢索資料時就不會出現亂碼了

10樓:註冊好勒

mysql_query("set names 'utf'");直接放在$conn就可以了。

11樓:惡魔壞

那你試試utf8,我是用的utf8,可以把漢子存入資料庫的

12樓:匿名使用者

那得看資料庫的編碼。

php建立mysql資料表,怎麼選擇utf8字符集

13樓:愛可生雲資料庫

一、轉碼失敗

在資料寫入到表的過程中轉碼失敗,資料庫端也沒有進行恰當的處理,導致存放在表裡的資料亂碼。

針對這種情況,前幾篇文章介紹過客戶端傳送請求到服務端。

其中任意一個編碼不一致,都會導致表裡的資料存入不正確的編碼而產生亂碼。

比如下面簡單一條語句:

set @a = "文字字串";

insert into t1 values(@a);

變數 @a 的字元編碼是由引數 character_set_client 決定的,假設此時編碼為 a,也就是變數 @a 的編碼。

2. 寫入語句在傳送到 mysql 服務端之前的編碼由 character_set_connection 決定,假設此時編碼為 b。

3. 經過 mysql 一系列詞法,語法解析等處理後,寫入到表 t1,表 t1 的編碼為 c。

那這裡編碼 a、編碼 b、編碼 c 如果不相容,寫入的資料就直接亂碼。

二、客戶端亂碼

表資料正常,但是客戶端展示後出現亂碼。

這一類場景,指的是從 mysql 表裡拿資料出來返回到客戶端,mysql 裡的資料本身沒有問題。客戶端傳送請求到 mysql,表的編碼為 d,從 mysql 拿到記錄結果傳輸到客戶端,此時記錄編碼為 e(character_set_results)。

那以上編碼 e 和 d 如果不相容,檢索出來的資料就看起來亂碼了。但是由於資料本身沒有被破壞,所以換個相容的編碼就可以獲取正確的結果。

這一類又分為以下三個不同的小類:

1)欄位編碼和表一致,客戶端是不同的編碼

比如下面例子, 表資料的編碼是 utf8mb4,而 session 1 發起的連線編碼為 gbk。那由於編碼不相容,檢索出來的資料肯定為亂碼。

2)表編碼和客戶端的編碼一致,但是記錄之間編碼存在不一致的情形

比如表編碼是 utf8mb4,應用端編碼也是 utf8mb4,但是表裡的資料可能一半編碼是 utf8mb4,另外一半是 gbk。那麼此時表的資料也是正常的,不過此時採用哪種編碼都讀不到所有完整的資料。這樣資料產生的原因很多,比如其中一種可能性就是表編碼多次變更而且每次變更不徹底導致(變更不徹底,我之前的篇章裡有介紹)。

舉個例子,表 t3 的編碼之前是 utf8mb4,現在是 gbk,而且兩次編碼期間都被寫入了正常的資料。

3)每個欄位的編碼不一致,導致亂碼和第二點一樣的場景。不同的是:非記錄間的編碼不統一,而是每個欄位編碼不統一。

舉個例子,表 c1 欄位 a1,a2。a1 編碼 gbk,a2 編碼是 utf8mb4。那每個欄位單獨讀出來資料是完整的,但是所有欄位一起讀出來,資料總會有一部分亂碼。

三、latin1

還有一種情形就是以 latin1 的編碼儲存資料

估計大家都知道字符集 latin1,latin1 對所有字元都是單位元組流處理,遇到不能處理的位元組流,保持原樣,那麼在以上兩種存入和檢索的過程中都能保證資料一致,所以 mysql 長期以來預設的編碼都是 latin1。這種情形,看起來也沒啥不對的點,資料也沒亂碼,那為什麼還有選用其他的編碼呢?原因就是對字元儲存的位元組數不一樣,比如 emoji 字元 "❤",如果用 utf8mb4 儲存,佔用 3 個位元組,那 varchar(12) 就能存放 12 個字元,但是換成 latin1,只能存 4 個字元。

14樓:匿名使用者

php建立mysql資料表,怎麼選擇utf8字符集php+mysql的utf-8中文亂碼問題的解決方法問題彙總:

1.mysql資料庫預設的編碼是utf8,如果這種編碼與你的php網頁不一致,可能就會造成mysql亂碼.

2.mysql中建立表時會讓你選擇一種編碼,如果這種編碼與你的網頁編碼不一致,也可能造成mysql亂碼.

3.mysql建立表時新增欄位是可以選擇編碼的,如果這種編碼與你的網頁編碼不一致,也可能造成mysql亂碼.

在 php和mysql中怎樣設定編碼?想設定為一致的。

15樓:匿名使用者

在建資料庫的時候在整理選gb2312_chinese_cihtml頁面設定編碼為gb2312或者gbk連線資料庫時設定編碼mysql_query("set names 'gbk'");或者mysql_query("set names 'gb2312'");

php 顯示mysql中的中文全是???? 編碼已設定為gb2312_chinese_ci,mysql的配置檔案也改了,估計是php讀

16樓:匿名使用者

//加上這條語句;

mysql_query("set names gbk");

//在這條語句之前;

$result=mysql_query($exec);

17樓:匿名使用者

在獲取到資料時在上轉換然後再在php中顯示

php怎麼設定編碼

18樓:新不起浪

header("content-type: text/html; charset=utf-8");

另外你的編輯器編碼也要對應哦

a. 如果欲使用gb2312編碼,那麼php要輸出頭:header(「content-type:

text/html; charset=gb2312"),靜態頁面新增,所有檔案的編碼格式為ansi,可用記事本開啟,另存為選擇編碼為ansi,覆蓋原始檔。

b. 如果欲使用utf-8編碼,那麼php要輸出頭 :header(「content-type:

text/html; charset=utf-8"),靜態頁面新增,所有檔案的編碼格式為utf-8。

最近需要用到iconv函式把抓取來過的utf-8編碼的頁面轉成gb2312, 發現只有用iconv函式把抓取過來的資料一轉碼資料就會無緣無故的少一些。 讓我鬱悶了好一會兒,去網上一查資料才知道這是iconv函式的一個bug。iconv在轉換字元"—"到gb2312時會出錯。

解決方法很簡單,就是在 需要轉成的編碼後加 "//ignore" 也就是iconv函式第二個引數後,如下:

iconv("utf-8","gb2312//ignore",$data)

ignore的意思是忽略轉換時的錯誤,如果沒有ignore引數,所有該字元後面的字串都無法被儲存。

19樓:匿名使用者

既然你資料庫編碼是utf8,那麼你把你這個php指令碼檔案另存為utf8編碼格式,就可以了!!

20樓:

在連線資料庫**後寫上:mysql_query("set names utf8");

21樓:匿名使用者

php.ini裡修改default_charst="utf8";

mysql_query('set names utf8');

web 頁面也設定成utf8;

字符集要一致。

22樓:匿名使用者

<?php

mysql_connect("localhost","root","");//連線資料庫 三個引數,web伺服器、 資料庫賬號及密碼。\

mysql_select_db("lyb");//選擇資料庫mysql_query("set names gb2312") //設定傳輸使用gb2312字符集防止亂碼。

?>

加上 mysql_query("set names gb2312") //設定傳輸使用gb2312字符集防止亂碼。

php的mysql同時修改表資料,怎麼實現

完成你的問題需要先假設幾個變數 傳值的id aid get id 要修改的新check內容 newcheck aaa 要在表b中加的數值 addcontent 20 第一個sql更新表a中的check內容 sql1 update a set check check.where aid get id ...

怎麼讓mysql表中某個欄位的值隨著另表改變

你可以建立一個觸發器,當另一個表中資料發生改變的時候,觸發觸發器,然後修改你想要修改的表欄位值,比如說你想要a表隨著b表改變,你就針對於b表建立一個觸發器 mysql 如何更新某個欄位的值為原來的值加1 格式 update 表名稱 set 欄位名稱 欄位名稱 1 where語句 比如說資料庫中有一張...

sqlserver怎麼設定表的許可權

有management studio中的表上右鍵選屬性 properties 左邊選許可權 permissions 右邊中間新增和選中某個user或role,下面選中或移除某個許可權。同樣你可用標準的賦權語句來實現 如 grant revoke select on 表名 to 使用者名稱。use t...