http://bbs.csdn.net/topics/390097514 gbk页面插入数据到utf8表,然后取出到gbk页面 首先,这个setnamesx等价于 SETcharacter_set_client=x; SETcharacter_set_results=x; SETcharacter_set_connection=x; 而这3个设置决定了不同阶段的字符集 ---------------
http://bbs.csdn.net/topics/390097514
gbk页面插入数据到utf8表,然后取出到gbk页面
首先, 这个set names x等价于
SET character_set_client = x;
SET character_set_results = x;
SET character_set_connection = x;
而这3个设置决定了不同阶段的字符集
------------------------------------
如果不加set names utf8
一般缺省情况下这3个设定都是latin1,你可以用show VARIABLES like 'character_set%'看一下
ok,这时,
字符集的变化情况是
gbk(输入页面)->latin1(character_set_client)->latin1(character_set_connection)->utf8(数据库)->latin1(character_set_connection)->latin1(character_set_results)->gbk(输出页面)
比如你输入一个"严"
"D1CF"(输入的一个gbk字符,被解释为2个latin1字符,因为你的client是latin1)
=>"D1""CF"(2个latin1字符ÑÏ)
->"c391""c38f"(2个utf8字符,进db,注意这时是4个字节,2个字符)
->"D1""CF"(2个latin1字符ÑÏ)
没了....
嗯?为啥没了还能在页面上看到正确的汉字"严"???
如果你在页面上"查看源代码", 你会看到那是"乱码"(latin字符)
这个是因为html页面是流方式输出到浏览器,浏览器只知道接受一串字符过来,然后根据你指定的编码,比如
来分析显示字符,注意2个latin1字符D1CF和一个gbk汉字严在二进制下是无法区分的,所以它就解释其为汉字,
如果你charset=ISO-8859-1了,它就变"乱码"了
-----------------------------------------------------------------
好, 这下来说set names utf8后, 就是
set character_set_client = utf8;
set character_set_results = utf8;
set character_set_connection = utf8;
那么,字符集变化为
gbk(输入页面)->utf8(character_set_client)->utf8(character_set_connection)->utf8(数据库)->utf8(character_set_connection)->utf8(character_set_results)->gbk(输出页面)
那么"严"的变化为
"D1CF"(输入的一个gbk字符,因为你client是utf8....被当成utf8字符)
->但是...好像不是合法的utf8字符....所以...(这步我没测试,到底转成了什么我也不知道)
->"乱码"(?个utf8字符)(存入数据库)
->"乱码"(原样取出并传到客户端,因为db和results都是utf8)
页面上就更是乱码了,而且无法变化页面字符集来得到正确的汉字
----------------------------------------------------------
所以,很多人都知道,你的这个情况应该set names gbk,就是
set character_set_client = gbk;
set character_set_results = gbk;
set character_set_connection = gbk;
那么,字符集变化为
gbk(输入页面)->gbk(character_set_client)->gbk(character_set_connection)->utf8(数据库)->gbk(character_set_connection)->gbk(character_set_results)->gbk(输出页面)
那么"严"的变化为
"D1CF"(输入的一个gbk字符,因为你client是gbk,所以被正确解释成gbk字符)
->"e4b8a5"(一个utf8字符,进db,注意这时是3个字节,1个字符)
->"D1CF"(转回正确的gbk字符)
这时你"查看源代码",应该也是正确的字符"严"
---------------------------------------------------------

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

Dreamweaver Mac版
시각적 웹 개발 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

mPDF
mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

안전한 시험 브라우저
안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.

Eclipse용 SAP NetWeaver 서버 어댑터
Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.
