사이트 개발 중국어 난 코드 방지 알 아야 할 codepage 의 중요성 소결

관련 된 주제 밖의 말:
1.운영 체제 window 시스템 내 부 는 모두 유 니 코드 입 니 다.폴 더 이름,파일 이름 등 은 유 니 코드 로 모든 언어 시스템 에서 정상적으로 표 시 됩 니 다.
2.입력 법:마이크로소프트 병 음 출력 은 유 니 코드 이 고 스마트 ABC 출력 은 간 체 중국어 입 니 다(그래서 스마트 ABC 는 비 간 체 중국어 시스템 에서 사용 할 수 없고 영어 만 칠 수 있 습 니 다).
3.웹 페이지 의 textarea 웹 페이지 의 textarea 는 유 니 코드 로 표 시 됩 니 다.그래서 안 으로 무슨 글 자 를 쳐 도 표 시 됩 니 다.일부 플래시 가 만 든 입력 상 자 는 안 된다.
4.Access 2000 access 에 저 장 된 데 이 터 는 유 니 코드 로 모든 언어 시스템 에서 표시 할 수 있 습 니 다.데이터 보기 에서 일부 문자 가 정상 적 이지 않 은 것 을 보면 사용 하 는 글꼴 이 유 니 코드 글꼴 이 아니 라 아 리 얼 유 니 코드 MS 글꼴 로 바 꾸 면 모두 표 시 됩 니 다.(access 도움말,검색,유 니 코드 입력,설명 있 음)
5.Wordword 의 번 거 로 운 전환,간 체 가 번 체 로 전환 한 후에 내부 코드 는 아직도 간 체 중국어 로 되 어 있 으 며 사실은 간 체 중의 번 체 자 일 뿐이다.
6.ASP 내 부 는 유 니 코드 이 고 모든 텍스트 는 유 니 코드 로 저 장 됩 니 다.필요 할 때 지정 한 문자 집합 으로 변환 합 니 다.
먼저 결론:<%@codepage=936%>간 체 중국어<%@codepage=950%>번 체 중국어<%@codepage=65001%>UTF-8
codepage 는 IIS 가 어떤 인 코딩 으로 전 달 된 직렬 을 읽 는 지 지정 합 니 다(폼 제출,주소 표시 줄 전달 등).
모든 텍스트 변수 가 유 니 코드 에서 변 환 된 인 코딩 도 지 정 했 고 데이터베이스 에서 꺼 낸 데이터 가 유 니 코드 에서 변 환 된 인 코딩 도 지 정 했 습 니 다.(이것 을 주의 하 는 것 이 중요 하 다.)
키워드:읽 기:하나의 직렬,간 체 로 읽 기 는 일부 글자 이 며,번 체 로 읽 기 는 일부 글자 이 며,직렬 자체 인 코딩 은 변 하지 않 았 습 니 다.
전환:유 니 코드 의'화'자 에서 빅 5 의'화'자 까지 시스템 의 주동 적 인 전환,내부 코드 는 빅 5 로 변 합 니 다.Big 5 에 해당 하 는 글자 가 없 으 면 유 니 코드 형식(&\#xxxx;)을 유지 합 니 다.
결론 6 개 유 니 코드 16 진수 형식:&\#x5316;&\#x516d;个结论Unicode 10 진수 형식:&\#21270;&\#20845;个结论
다음은 제 가 추측 한 인 코딩 변환 과정 입 니 다.클 라 이언 트:입력 법 유 니 코드-입력 상자 유 니 코드-유 니 코드 에서 charset 로 대응 하 는 인 코딩()-폼 으로 인 코딩 을 보 냅 니 다.
서버 쪽:IIS 폼 인 코딩 해제--codepage 지정 인 코딩 으로 읽 기--대응 하 는 유 니 코드 로 변환--request(")로 읽 기--일부 처리-유 니 코드 인 코딩 으로 데이터베이스 에 저장
서버 쪽:데이터베이스 의 유 니 코드 데 이 터 를 읽 고 codepage 지정 인 코딩 으로 변환 합 니 다.원본 코드 생 성--IE 는 charset 에 따라 읽 습 니 다.
다음 예 를 들 어 설명:예 1:세 개의 asp 페이지 가 있다 고 가정 하고 전형 적 인 댓 글 페이지:1.write.asp 간단 한 입력 폼 을 add.asp 에 제출 합 니 다.2.add.asp 는 메 시 지 를 받 아 데이터베이스 에 저장 합 니 다.<%@codepage=936%>3.read.asp 는 데이터베이스 에서 메 시 지 를 받 아 표시 합 니 다.<%@codepage=936%>charset=GB 2312 또는<%@codepage=950%>charset=big 5
제 가 write.asp 에서 마이크로소프트 병 음 입력 법 으로'화 6 개 토론'을 입력 한 것 을 맞 춰 보 세 요.마지막 으로 read.asp 에 어떤 모습 이 나 올 까요?어 지 러 운 거 아니 야?처음부터 분석 합 시다.

예 2:예 1 의 add.asp 의<%@codepage=936%>를<%@codepage=950%>로 바 꾸 면 어떻게 될까요?

여기까지 뭘 발 견 했 지?1.입력 한 문자 와 Charset 가 대응 하 는 것 이 다 르 면 변환 하면 유 니 코드 형식의 글자 가 나 올 수 있 습 니 다.여기 가 이유 야.앞으로 모든 과정 은 보류 되 어 있다.2.add.asp 에서 codepage 는 데이터베이스 에 저 장 된 문 자 를 결정 합 니 다.어떤 언어 로 대응 하 는 유 니 코드 를 사용 하 는 지 결정 합 니 다.예 를 들 어 codepage=936,데이터 베 이 스 는 간 체 중국어 의 유 니 코드(데이터 베 이 스 는 간 체 중국어 시스템 을 되 찾 고 모든 것 이 정상 적 입 니 다),codepage=950 은 번 체 중국어 의 유 니 코드 를 저장 합 니 다.(간 체 중국어 시스템 을 되 찾 으 면 틀 립 니 다)
3.직렬 의 변화 과정 에 주의 하 세 요.
1)입력 법-CharsetUnicode-지정 문자 집합 맵 2)Charset-폼 인 코딩 직렬 단순 인 코딩 3)폼 디 코딩 상단 의 역 과정,두 단계 상쇄.4)직렬 à codepage 에 따라 직렬 을 읽 는 것 은 변 함 이 없습니다.이 단 계 는'오해 읽 기'5)가 대응 하 는 유 니 코드 Codepage 지정 문자 집합-유 니 코드 맵 6)으로 전 환 될 수 있 습 니 다.데이터베이스 에 들 어 가 는 것 은 변 함 이 없 으 며,직접 유 니 코드 형식 으로 7)codepage 에 따라 데이터베이스 유 니 코드-codepage 지정 문자 집합 을 읽 는 맵 8)을 표시 합 니 다.Charset 에 따라 직렬 을 읽 는 것 은 변 함 이 없습니다.
예 를 들 어 설명 하 다.

예 2:

어 지 러 워.이제 지식 으로
사례 1.간 체 중국어 시스템 에서 잘 뛰 는 코드 를 외국 공간 에 두 고 데이터 베 이 스 를 어 지 럽 히 며 원래 의 데이터 도 어 지 럽 습 니 다.분석:대부분의 사람들 이 평소에 간 체 중국어 시스템 을 사용 하기 때문에 기본 적 인 codepage=936 을 사용 하기 때문에 평소에 쓰 지 않 아 도 괜 찮 습 니 다.하지만 해외 공간 문제 가 생 겼 다.데이터베이스 에 있 는 유 니 코드 에서 영문 인 코딩 으로 변환 되 었 기 때문에 데이터베이스 에 있 는 간 체 중국 어 를 영어 로 변환 한 후 GB 를 누 르 면 자 연 스 러 운 인 코딩 을 표시 합 니 다.그림 과 같이 새로 입력 한 문 자 는 정상적으로 표시 되 지만 데이터베이스 에 저 장 된 것 은 영문 유 니 코드 입 니 다.해결 방법:모두<%@codepage=936 을 더 하면%>.전체 과정 은 간 체 중국어 와 대응 하 는 유 니 코드 간 의 전환 만 있 을 뿐이다.

사례 2:간 체 중국어 의 코드 와 데 이 터 를 완전한 번 체 판 으로 바 꾸 려 면 어떻게 해 야 합 니까?분석:1.코드 파일 인 코딩 은 모두 Big 5 로 바 뀌 었 고 파일 자체 에 인 코딩 선택 번 체 를 저장 합 니 다.2.<%@codepage=936%>3.Charset=big 54.access 버 전 은 상관 없습니다.access 의 데 이 터 는 유 니 코드 이기 때 문 입 니 다.5.자,코드 는 순 번 체 시스템 에서 도망 갈 수 있 습 니 다.6.남 겨 진 문제:기 존의 간 체 중국어 데 이 터 를 읽 으 면 물음표 가 있 을 수 있 습 니 다.효과 가 같은 950 읽 기,big5 표시.간 체 중국어 의 유 니 코드 에서 번 체 중국어 로 바 뀌 었 기 때문에 어떤 글자 들 은 번 체 에 없 으 면 물음표 가 나온다.7.해결:임시 asp 페이지,codepage=65001,간 체 중국어 로 읽 는 유 니 코드,유 니 코드->Big 5 함수 로 번 체 중국어 로 전환 한 후 데이터 베 이 스 를 다시 쓰 면 되 겠 죠?
두 사례 는 완전히 내 가 이론 에 따라 추론 해 낸 것 으로 실증 되 지 않 았 다.비슷 한 경험 이 있 는 환영 비판 지적.

좋은 웹페이지 즐겨찾기