복붙노트

[REDIS] 어떻게 저장하고 레디 스의 악센트로 문자열을 검색하는?

REDIS

어떻게 저장하고 레디 스의 악센트로 문자열을 검색하는?

나는 세트로 관리하고 내 레디 스의 DB에 액센트 문자열을 검색하지 않습니다. 액센트 문자, 어떻게 내가 어디 세트 그들은 그들을 다시 검색 할 수 있습니다 인코딩?

redis> set test téléphone
OK
redis> get test
"t\xc3\xa9l\xc3\xa9phone"

나는이 이미 요청 된 알 (http://stackoverflow.com/questions/6731450/redis-problem-with-accents-utf-8-encoding)하지만 구체적인 대답은 없다.

해결법

  1. ==============================

    1.레디 스 서버 자체는 그렇게 인코딩에 의존하지 않고, 진 개체로 모든 데이터를 저장한다. (UTF-8 문자 포함) 단지 클라이언트가 전송되는 것을 저장할 서버.

    레디 스 서버 자체는 그렇게 인코딩에 의존하지 않고, 진 개체로 모든 데이터를 저장한다. (UTF-8 문자 포함) 단지 클라이언트가 전송되는 것을 저장할 서버.

    여기에 몇 가지 실험은 다음과 같습니다 :

    $ echo téléphone | hexdump -C
    00000000  74 c3 a9 6c c3 a9 70 68  6f 6e 65 0a              |t..l..phone.|
    

    c3a9는 'E'문자의 표현입니다.

    $ redis-cli
    > set t téléphone
    OK
    > get t
    "t\xc3\xa9l\xc3\xa9phone"
    

    실제로 데이터가 올바르게 레디 스 서버에 저장됩니다. 이 단말기에서 실행될 때, 상기 레디 스 클라이언트 해석 출력과 sdscatrepr 함수를 적용은 (그 정의에 따라 장소이고, 어쨌든 멀티 바이트 문자를 위해 나누어 질 수있다) 이외의 인쇄 문자를 변환한다.

    간단한 해결 방법은 '원시'옵션을 발사 레디 스-CLI에 있습니다 :

    $ redis-cli --raw
    > get t
    téléphone
    

    그것은 실제로 문제가되지 않습니다, 그래서 자신의 응용 프로그램은 아마, 클라이언트 라이브러리보다는 레디 스 - CLI 중 하나를 사용합니다.

  2. from https://stackoverflow.com/questions/8963372/how-to-save-and-retrieve-string-with-accents-in-redis by cc-by-sa and MIT license