database.sarang.net
UserID
Passwd
Database
DBMS
ㆍMySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MySQL Q&A 25711 게시물 읽기
No. 25711
utf8 관련
작성자
가입자(ksh3498)
작성일
2006-08-09 16:16ⓒ
2006-08-10 18:19ⓜ
조회수
4,782

질문이 깁니다..천천히 보시고....조언을 바랍니다..^^

 

문제점은 Data 저장시 UTF8로 저장이 안됩니다..(실제 칼럼에 unicode값으로)

환경은 Windows, ASP, Mysql 5.0.22 이구요.

Connection 은 ODBC로 연결을합니다(최신버전이구요.)

 

한글,타언어 등 확장문자를 사용 해야 하기때문에 UTF8을 사용 하려고 합니다.

위와 같은 환경으로 해서 작업을 하는데..

실제 데이터가 ANSI형으로 들어가거나 깨집니다.

 

예를 들어 ? 라는 글자(라틴어)를 Insert 할때

실제 Execute 를 하기전에 SQL을 찍어보면 insert into abc values('?') 와 같이 제대로 보입니다.

그런데 테이블에 들어간 데이터를 보면 '?' 로 보이구요.

==> 이런 글자가 깨지네요(하단 이미지를 참조하세요)

 

asp 파일은 ultraedit로 작업 했구요..파일설정을 unicode로 했습니다.

파일 저장시 UTF-8로 하거나 파일-변환-ASCII를 UTF-8로(unicode편집) 메뉴로도 변경했구요..

 

소스코드 상단에


도 넣었고

도 추가 했습니다.

 

전부 UTF-8 환경이구요...(제 생각엔)

 

MYSQL 5.0.22이고 install시 UTF-8로 셋팅했습니다. my.ini 내용은

[client]
port=3307

[mysql]
default-character-set=utf8 <- 해보다가 안되서 제가 추가로 셋팅했구요

[mysqld]
port=3307
basedir="C:/Program Files/MySQL/MySQL Server 5.0/"
datadir="C:/Program Files/MySQL/MySQL Server 5.0/Data/"

default-character-set=utf8 <- 여기도....

default-storage-engine=INNODB
sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

max_connections=100
query_cache_size=0
table_cache=256
tmp_table_size=9M
thread_cache_size=8
myisam_max_sort_file_size=100G
myisam_max_extra_sort_file_size=100G
myisam_sort_buffer_size=18M
key_buffer_size=11M
read_buffer_size=64K
read_rnd_buffer_size=256K
sort_buffer_size=256K

innodb_additional_mem_pool_size=2M
innodb_flush_log_at_trx_commit=1
innodb_log_buffer_size=1M
innodb_buffer_pool_size=18M
innodb_log_file_size=10M
innodb_thread_concurrency=8

show variables like 'ch%' 내용은

 

character_set_client >> latin1
character_set_connection >> latin1
character_set_database >> utf8
character_set_filesystem >> binary
character_set_results >> latin1
character_set_server >> utf8
character_set_system >> utf8


입니다.

그래서 insert 전에 DbConn.execute("set names utf8") 이런식으로 변경을 하면

 

character_set_client >> utf8
character_set_connection >> utf8
character_set_database >> utf8
character_set_filesystem >> binary
character_set_results >> utf8
character_set_server >> utf8
character_set_system >> utf8


이렇게 됩니다.

 

위 두가지 상황에서 다 해봐도 마찬가지더군요.

 

제가 생각한 부분은 ODBC로 연결해서 Insert 처리시 제대로 되지 않는것 같습니다.

다른 원인은 잘 모르겠구요.

 

해결 방법을 알고 싶습니다.

반드시 UTF8형식으로 제대로 저장을 하고 싶습니다...

 

-------------------------------------------

1차 수정

여기 게시판도 UTF8을 지원하지 않네요.

참고로 윈도우즈 문자표에서 다음과 같은 글자로 테스트를 한겁니다.

위에 나오는 내용중 파란색 굵은 ?가 아래 글자입니다.

-----------------------------------------

2차 수정

저장 하고보니 이미지 추가가 안되네요..

 

말로 설명을 드리면

윈도우즈 시작버튼 - 프로그램 - 보조프로그램 - 시스템도구 - 문자표를 띄우시고

굴림폰트를 선택후 고급보기 체크후에 문자집합에 Unicode를 선택하면

라틴어 하나입니다..알파벳에 위에 특수표시가 있는 문자들이죠..

이 글에 대한 댓글이 총 4건 있습니다.
ÂÂÂ 를 저장하니까 &Acirc;&Acirc;&Acirc; 이렇게 저장되네요. 
익스플로러에도 잘 나오는데요...

버젼 5.021

my.ini 파일내용
init_connect="SET collation_connection = euckr_korean_ci"
init_connect="SET NAMES euckr"
default-character-set=euckr
character-set-server=euckr
collation-server=euckr_korean_ci

테이블 생성
CREATE TABLE 테이블명 (
`idx` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
`UserName` VARCHAR(12) NOT NULL
)
ENGINE = MYISAM DEFAULT CHARSET=utf8;

<META HTTP-EQUIV="content-type" CONTENT="text/html;charset=korean">

뭐가 잘못되었는지 천천히 다시 확인해 보세요.
정왕균(areakr)님이 2006-08-10 10:29에 작성한 댓글입니다.

우선 답변 감사 드립니다.

그런데 문제는 다국어를 써야 하기 때문에 euckr로 셋팅을 하면 안된다는겁니다.

물론 DB 밑 Table 지금 모두 UTF8로 셋팅 된 상태이지요..

가입자(ksh3498)님이 2006-08-10 11:34에 작성한 댓글입니다.
init_connect="SET collation_connection = euckr_korean_ci"
init_connect="SET NAMES euckr"
이거는 연결 클라이언트에 보낼때 변환하는 거니까 상관없고

default-character-set=euckr
character-set-server=euckr
collation-server=euckr_korean_ci
이거는 디비의 기본 캐릭터 셋인데 디비생성할 때나 테이블 생성할때 utf8로하면 상관없습니다.

이상한 문자를 저장해보니 잘되어서 답변드린 것입니다. 잘못된 것이 있는지 확인해 보시고 안되면 다시 설치해 보세요.
정왕균(areakr)님이 2006-08-10 15:03에 작성한 댓글입니다.

흠..제가 말씀 드린건 그게 아니구요...^^

정왕균님 말씀대로 실제 데이터 값이 그렇게 들어가면 
Unicode 값이 아니고 다른 값으로 들어가기 때문에 문제가 되는겁니다.

가입자(ksh3498)님이 2006-08-10 18:22에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
25714java에서 mysql 에 데이터 입력시 ??? 나오는 문제
임시손님
2006-08-10
1350
25713날짜 변환 [1]
닉산
2006-08-10
2393
25712replication 관련 [3]
CoolImpact
2006-08-09
1673
25711utf8 관련 [4]
가입자
2006-08-09
4782
25709회원별 통계 쿼리 질문입니다. [6]
이창민
2006-08-09
2583
25708[질문]4.x 에서는 되었었는데 5.x 에서는 안되는데요.. [2]
이정득
2006-08-09
1258
25707캐릭터셋 변경방법 알려주세요.. [1]
유은영
2006-08-09
1871
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.023초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다