문제

SQLITE C/C ++ API가 반환되는 이유 unsigned char *더 많은 데이터가 아닌 텍스트 값의 경우 char * 유형?

이것은 다소 관련이 있습니다 서명되지 않은 숯 SQLITE API의 결정이 기존의 반대입니다. char * 문자열과 같은 값에 대한 조언.

예를 들어:

const unsigned char *sqlite3_column_text(sqlite3_stmt*, int iCol);
도움이 되었습니까?

해결책

로부터 SQLITE 문서:

(h13821) sqlite3_column_text (s, n) 인터페이스는 준비 된 문의 결과 세트의 현재 행에서 n 번째 열을 0 종료 UTF-8 문자열로 변환하고 해당 문자열로 포인터를 반환합니다.

UTF-8은 0x00에서 0xff 범위의 바이트 값을 원합니다. char는 -0x80 ~ 0x7f (서명) 또는 0x00 ~ 0xff (부호없는) 범위입니다. Unsigned를 강제하면 UTF-8 문자열의 적절한 인코딩이 가능합니다.

다른 팁

거친 추측에서 나는 그것이 UTF-8 인코딩을 지원하는 것과 관련이 있다고 말한다. 서명 된 Char 값은 0x7F 이상의 모든 것이 해석에 열려있는 7 비트 ASCII 환경에서만 의미가 있습니다. UTF-8에서 0x00과 0xff 사이의 모든 것은 동일하게 사용할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top