Perl utf-8에서 그리스어로 디코딩 할 수 없습니다.

Haris Tsantas

메신저 플랫폼에서 JSON 문서를 가져 와서 $message_text그리스어 단어와 비교하고 싶습니다 . UTF-8에서 디코딩 한 후 문제는 디코딩이 일어나지 않고 디코딩 전후에 $message_text동일한 값 ( "\xce\x93\xce\xb5\xce\xb9\xce\xb1")이 있다는 것입니다.

use strict;
use warnings 'all';

use JSON;
use Data::Dumper;
use HTTP::Request::Common;
use LWP::UserAgent;
use CGI;
use HTTP::Daemon;
use HTTP::Status;
use Encode qw(decode encode);
use DBI;
use utf8;
use Encode;


my $message_payload;
my $message_sender_id;


sub decode_json_reply{
  #Decoding the message we recieved from the messenger
  my $json_text = shift;

  warn "Callback_Messages_Testa1:".$json_text;


  my $message_res = JSON::decode_json($json_text);

  my $message_text = $message_res->{entry}[0]->{messaging}[0]->{message}->{text};
  $message_sender_id = $message_res->{entry}[0]->{messaging}[0]->{sender}->{id};
  my $message_recipient_id = $message_res->{entry}[0]->{messaging}[0]->{recipient}->{id};
  $message_payload = $message_res->{entry}[0]->{messaging}[0]->{postback}->{payload};
  my $message_watermark = $message_res->{entry}[0]->{messaging}[0]->{delivery}->{watermark};


  $message_text = Encode::decode_utf8($message_text);


  if("Γεια" eq $message_text){
    warn "DONE-GREEK";
  }



}

이것은 메신저 플랫폼에서 돌아 오는 json입니다.

{"object":"page","entry":[{"id":"434218046923911","time":149‌​4249616799,"messagin‌​g":[{"sender":{"id":‌​"1184989524957707"},‌​"recipient":{"id":"4‌​34218046923911"},"ti‌​mestamp":14942496163‌​87,"message":{"mid":‌​"mid.$cAAGK6wcXaFtiG‌​Xz8A1b6DJt38to5","se‌​q":667346,"text":"\\‌​u0393\\u03b5\\u03b9\‌​\u03b1"}}]}]}

<%

my $query = $Request->BinaryRead();


decode_json_reply($query);


%>
보로딘
  • 당신이해야 할 use utf8내용이 UTF = 8로 인코딩 된 것을 말 파일의 상단에

  • 문자열을 eq, not 과 비교 =해야하며 use warnings 'all'이와 같은 오류를 경고하기 위해 추가해야 합니다.

  • UTF-8 데이터를 인쇄하려면 문자로 작업하고 UTF-8을 사용하도록 출력 스트림을 설정해야합니다.use open qw/ :std :encoding(utf8) /

  • Perl의 내부 문자열 인코딩은 UTF-8을 기반으로하므로 UTF로 인코딩 된 바이트와 인코딩되지 않은 Perl 문자의 출력간에 차이가 없습니다.



최신 정보

다음은 올바른 결과를 제공하는 코드 버전입니다. 로깅 프로세스가 손상된 원본 데이터라고 생각하는 것을 사용했습니다. 이 코드와 자신의 코드 사이의 차이점을 발견 할 수 있다면 문제를 찾은 것입니다.

use utf8;
use strict;
use warnings 'all';
use feature 'say';

use JSON 'decode_json';

my $json_text = q<{"object":"page","entry":[{"id":"434218046923911","time":1494253318253,"messaging":[{"sender":{"id":"1184989524957707"},"recipient":{"id":"434218046923911"},"timestamp":1494253317826,"message":{"mid":"mid.$cAAGK6wcXaFtiGbV2wlb6GrnuFJAh","seq":667376,"text":"\u0393\u03b5\u03b9\u03b1"}}]}]}>;

my $message_res = decode_json( $json_text );

my $message_text;

for ( $message_res->{entry}[0]{messaging}[0] ) {

    $message_text = $_->{message}{text};
}

say "DONE-GREEK3" if $message_text eq "Γεια";

산출

DONE-GREEK3

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

파이썬은 utf-8로 인코딩 할 수 있지만 디코딩 할 수 없습니다.

분류에서Dev

ASP : utf-8에서 iso-8859-1로 일부 문자를 디코딩 할 수 없습니다.

분류에서Dev

Obj-C에서 Java와 유사한 방식으로 UTF-8을 디코딩 할 수 없습니다.

분류에서Dev

csv를 UTF-8로 인코딩 할 수 없습니다.

분류에서Dev

인코딩을 utf8로 변경할 수 없습니다.

분류에서Dev

바이트 배열을 UTF8로 인코딩 한 다음 다시 바이트로 디코딩 할 수 없습니다.

분류에서Dev

ruby1.9.3에서 "gb2312"를 "utf-8"로 인코딩하는 "["를 변환 할 수 없습니다.

분류에서Dev

예외가 발생했습니다. UnicodeDecodeError 'utf-8'코덱이 위치에서 0xf1 바이트를 디코딩 할 수 없습니다.

분류에서Dev

python UnicodeDecodeError : 'utf8'코덱은 바이트를 디코딩 할 수 없습니다.

분류에서Dev

Python UnicodeDecodeError : 'utf-8'코덱이 바이트를 디코딩 할 수 없습니다.

분류에서Dev

UTF8에서 ASCII로 변환 할 수 없습니다.

분류에서Dev

UnicodeDecodeError : 'utf-8'코덱이 위치 3에서 0xa1 바이트를 디코딩 할 수 없습니다. 잘못된 시작 바이트입니까?

분류에서Dev

UnicodeDecodeError : 'utf-8'코덱은 위치 2에서 0xb5 바이트를 디코딩 할 수 없습니다. 잘못된 시작 바이트

분류에서Dev

UnicodeDecodeError : 'utf-8'코덱이 위치 0에서 바이트 0x90을 디코딩 할 수 없습니다 : 잘못된 시작 바이트

분류에서Dev

python2.7에서 'utf8'문자열을 디코딩 할 수없는 이유는 무엇입니까?

분류에서Dev

인코딩 오류가 발생하면 ascii-8bit를 utf-8bit로 변환 할 수 없습니다.

분류에서Dev

'utf-8'코덱이 바이트를 디코딩 할 수 없음-Python

분류에서Dev

자바 스크립트에서 주어진 코드를 디코딩 할 수 없습니다.

분류에서Dev

Spark 결과 인코딩 오류 'ascii'코덱이있는 HDInsight 클러스터의 UTF-8 텍스트는 위치에있는 문자를 인코딩 할 수 없습니다. 서 수가 범위에 없습니다 (128).

분류에서Dev

Circe에서 세트를 디코딩 할 수 없습니다.

분류에서Dev

GAE Datastore : UTF-8을 기본 인코딩으로 사용할 수 없습니다.

분류에서Dev

json.dumps 오류를 수정하는 방법 ''utf8 '코덱이 위치 2에서 바이트 0xe0을 디코딩 할 수 없습니까?

분류에서Dev

'utf-8'코덱이 위치 227의 0x96 바이트를 디코딩 할 수 없습니다. 시작 바이트가 잘못되었습니다.

분류에서Dev

IIS 8의 가상 dotnet 코어 API 응용 프로그램에서 가상 디렉터리에 액세스 할 수 없습니다.

분류에서Dev

tidy_parse_file () : 'UTF-8'인코딩을 설정할 수 없습니다.

분류에서Dev

tidy_parse_file () : 'UTF-8'인코딩을 설정할 수 없습니다.

분류에서Dev

Perl에서 JSON 인코딩 / 디코딩 utf8 문자열

분류에서Dev

Flutter 배경 이미지 "바이트를 UTF-8로 디코딩 할 수 없음"

분류에서Dev

바코드 디코딩을 위해 UWP에서 'WriteableBitmap'유형을 'LuminanceSource'로 변환 할 수 없습니다.

Related 관련 기사

  1. 1

    파이썬은 utf-8로 인코딩 할 수 있지만 디코딩 할 수 없습니다.

  2. 2

    ASP : utf-8에서 iso-8859-1로 일부 문자를 디코딩 할 수 없습니다.

  3. 3

    Obj-C에서 Java와 유사한 방식으로 UTF-8을 디코딩 할 수 없습니다.

  4. 4

    csv를 UTF-8로 인코딩 할 수 없습니다.

  5. 5

    인코딩을 utf8로 변경할 수 없습니다.

  6. 6

    바이트 배열을 UTF8로 인코딩 한 다음 다시 바이트로 디코딩 할 수 없습니다.

  7. 7

    ruby1.9.3에서 "gb2312"를 "utf-8"로 인코딩하는 "["를 변환 할 수 없습니다.

  8. 8

    예외가 발생했습니다. UnicodeDecodeError 'utf-8'코덱이 위치에서 0xf1 바이트를 디코딩 할 수 없습니다.

  9. 9

    python UnicodeDecodeError : 'utf8'코덱은 바이트를 디코딩 할 수 없습니다.

  10. 10

    Python UnicodeDecodeError : 'utf-8'코덱이 바이트를 디코딩 할 수 없습니다.

  11. 11

    UTF8에서 ASCII로 변환 할 수 없습니다.

  12. 12

    UnicodeDecodeError : 'utf-8'코덱이 위치 3에서 0xa1 바이트를 디코딩 할 수 없습니다. 잘못된 시작 바이트입니까?

  13. 13

    UnicodeDecodeError : 'utf-8'코덱은 위치 2에서 0xb5 바이트를 디코딩 할 수 없습니다. 잘못된 시작 바이트

  14. 14

    UnicodeDecodeError : 'utf-8'코덱이 위치 0에서 바이트 0x90을 디코딩 할 수 없습니다 : 잘못된 시작 바이트

  15. 15

    python2.7에서 'utf8'문자열을 디코딩 할 수없는 이유는 무엇입니까?

  16. 16

    인코딩 오류가 발생하면 ascii-8bit를 utf-8bit로 변환 할 수 없습니다.

  17. 17

    'utf-8'코덱이 바이트를 디코딩 할 수 없음-Python

  18. 18

    자바 스크립트에서 주어진 코드를 디코딩 할 수 없습니다.

  19. 19

    Spark 결과 인코딩 오류 'ascii'코덱이있는 HDInsight 클러스터의 UTF-8 텍스트는 위치에있는 문자를 인코딩 할 수 없습니다. 서 수가 범위에 없습니다 (128).

  20. 20

    Circe에서 세트를 디코딩 할 수 없습니다.

  21. 21

    GAE Datastore : UTF-8을 기본 인코딩으로 사용할 수 없습니다.

  22. 22

    json.dumps 오류를 수정하는 방법 ''utf8 '코덱이 위치 2에서 바이트 0xe0을 디코딩 할 수 없습니까?

  23. 23

    'utf-8'코덱이 위치 227의 0x96 바이트를 디코딩 할 수 없습니다. 시작 바이트가 잘못되었습니다.

  24. 24

    IIS 8의 가상 dotnet 코어 API 응용 프로그램에서 가상 디렉터리에 액세스 할 수 없습니다.

  25. 25

    tidy_parse_file () : 'UTF-8'인코딩을 설정할 수 없습니다.

  26. 26

    tidy_parse_file () : 'UTF-8'인코딩을 설정할 수 없습니다.

  27. 27

    Perl에서 JSON 인코딩 / 디코딩 utf8 문자열

  28. 28

    Flutter 배경 이미지 "바이트를 UTF-8로 디코딩 할 수 없음"

  29. 29

    바코드 디코딩을 위해 UWP에서 'WriteableBitmap'유형을 'LuminanceSource'로 변환 할 수 없습니다.

뜨겁다태그

보관