2010-02-19 2 views
1

C의 인코딩 된 문자 버퍼 배열이 512이고 MySQL의 데이터베이스 필드가 varchar입니다. 인코딩 된 문자 버퍼를 varchar에 저장할 수 있습니까?C를 사용하는 MySQL varchar의 인코딩 된 문자 버퍼 저장 문제

나는 이것을 시도했지만, 내가 직면 한 문제는 버퍼의 제한된 영역만을 데이터베이스에 저장하고 무시한다는 것이다. 실제 문제는 무엇이며 어떻게이 문제를 해결합니까?

+0

관련 코드 샘플을 게시 하시겠습니까? –

답변

3

당신이 인코딩에 의해 무엇을 의미하는지 분명하지 않다 참조하십시오.

임의의 바이트 값 문자열이있는 경우 varchar는 후행 공백을 잘라내려고하기 때문에 적합하지 않습니다. 이 경우 더 나은 선택은 varbinary 필드를 사용하는 것입니다.

삽입하는 문자열이 제어 문자가 포함 된 경우가 16 진수 문자열로 그 변환하고 싶은 삽입 최선 수는 다음과 같습니다

create table xx ( 
    v varbinary(512) not null); 

insert into xx values (0x68656C6C6F20776F726C64); 

이 NUL에 질식에서 툴 체인의 모든 구성 요소를 방지 할 수 있습니다 문자 등.

-1

테이블에 대해 varchar의 크기는 얼마입니까?

종종 varchar 필드는 문자가 아닌 255 바이트로 설정됩니다. MySQL 5.0.3부터는 더 긴 varchar 필드를 사용할 수 있습니다.

varchar (512) 필드가 필요한 것 같습니까?

http://dev.mysql.com/doc/refman/5.0/en/char.html

+0

varchar 크기는 650이며 char 버퍼에서 2 또는 4 바이트 만 저장합니다. – Siddiqui