sqlite c/c ++ api 부호없는 char *
문제
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 사이의 모든 것은 동일하게 사용할 수 있습니다.
제휴하지 않습니다 StackOverflow