5
파이썬에서는 유니 코드로 인코딩 된 텍스트가 있습니다. 이 텍스트에는 'x'로 변환하려는 줄 바꿈하지 않는 공백이 포함됩니다. 줄 바꿈하지 않는 공백은 chr(160)
과 같습니다. 나는 다음과 같은 코드를 가지고 있는데,이 코드는 Localhost를 사용하여 Eclipse를 통해 Django로 실행할 때 훌륭하게 작동한다. 오류가 없으며 비 분리 공백이 변환됩니다. 이 비교하려고하기 때문에파이썬 : 유니 코드의 줄 바꿈하지 않는 공간 바꾸기
'ascii' codec can't decode byte 0xa0 in position 0: ordinal not in range(128)
내 생각이 오류가 의미한다 : 나는 그것을 (대신 이클립스의 runserver를 통해 파이썬 명령 행, 장고를) 다른 방법을 실행할 때
my_text = u"hello"
my_new_text = my_text.replace(chr(160), "x")
그러나 오류가 발생합니다 유니 코드 (my_text)를 유니 코드가 아닌 것으로 변환합니다. 내 질문 :
chr(160)
이 유니 코드가 아니면 어떻게해야합니까?- Eclipse에서 실행할 때 어떻게 작동합니까? 이를 이해하면 코드의 다른 부분을 변경해야하는지 판단하는 데 도움이됩니다. 내가 Eclipse에서 내 코드를 테스트 해왔다.
- (가장 중요) 비 분리 공백 제거에 대한 원래의 문제를 어떻게 해결할 수 있습니까?
my_text
은 확실히 유니 코드가 될 것입니다. 파이썬 2에서
완벽한, 감사합니다. unichr()은 Eclipse를 통하지 않고 Eclipse를 통해 작동합니다. 이상한 chr()과 unichr()은 Eclipse에서 실행할 때 동일한 결과를 제공합니다. – user984003
Eclipse 구성이 ASCII 대신 기본 인코딩을 UTF8로 변경할 수 있습니다. 권장 사항이 아닙니다. 이제 호환성이 분명해야합니다. 해당 구성에서 작성된 코드는 다른 곳에서 작동하지 않을 수 있습니다. –
실제로 ASCII (0x00에서 0x7F)는 UTF-8의 처음 128 코드 포인트가 ASCII와 같기 때문에 UTF-8과 호환됩니다. 그러나, 0xa0는 확실히 ASCII가 아니므로, 'unichr'대신에'chr'을 사용하는 동안 오류가 발생합니다 ... – dda