중국어와 일본어 입력을 위해 Linux에서 SCIM을 사용합니다. 불행히도 Perl의 STDIN을 사용하여 입력을 캡처하려고하면 입력이 미친 것입니다. 로마 문자가 입력되면 SCIM은 올바른 최종 문자를 추측합니다.Perl에서 STDIN으로 SCIM을 통해 중국어 입력을 캡처하는 방법은 무엇입니까?
^H (백 스페이스) 코드는 명령 줄에서 이전에 제안 된 문자를 삭제하는 데 사용됩니다. (입력 할 때 SCIM은 최종 아시아 문자를 추측하여 표시합니다.) 그러나 이러한 백 스페이스 문자는 문자 그대로^H로 표시되고 올바르게 해석되지 않습니다.
일례 라이너 :
你 : 여기에서 결과 => 你好
perl -e 'print "Chinese: "; my $s = <STDIN>; print $s'
I는 입력 I가 SCIM 중국어 또는 일본어 인 에이블 입력, 예 nihao^H^H^H^^ H^H^H^H^H^H^^^
이 문자열의 맨 마지막 부분에 "好 "(nihao/안녕하세요). 정상적인 bash 프롬프트에서 nihao (중국어 사용 가능)를 입력하면 결과가 완벽합니다.
이것은 펄의 STDIN 동안 백 스페이스 문자 (또는 제어 문자)의 해석과 관련이 있습니다. Bash에서 'read'명령을 사용할 때도 똑같은 일이 발생합니다.
증인 : read -p 'Chinese: ' s && echo $s
나는 펄에게 stdin의 인코딩이 무엇인지 말해야한다고 생각한다. 나는 그것을하는 방법을하지만 내 머리 꼭대기에서 모릅니다. : | –
@Robert P :'binmode STDIN, ": 인코딩 (UTF-8)";'. 그러나 나는 그것이 여기의 문제라고 생각하지 않는다. –
'read -ep '중국어를 사용해보십시오 :'readline'을 사용하여 사물에 영향을 주는지 확인하십시오 :'s && echo $ s'. –