2011-04-07 2 views
2

Perl (OTRS)로 작성된 서비스의 웹 API를 사용하려고합니다. 데이터는 JSON 형식으로 전송됩니다.Perl JSON 파운드 기호 이스케이프

JSON 구조 내부의 문자열 값 중 하나에는 파운드 기호가 들어 있으며 JSON에서 주석 문자로 사용됩니다. 이 구문 분석 오류가 발생합니다

unexpected end of string while parsing JSON string

내가 성공적으로 구문 분석 문자열을 얻기 위해 문자를 탈출하는 방법을 찾을 수 없습니다.

illegal backslash escape sequence in string

모든 아이디어가 어떻게 탈출 : 명백한 슬래시의 결과를 탈출?

업데이트 :가 내가 사용하려고 URL은 그 같은 모습 (간체를 여전히 오류가 발생합니다) :

http://otrs.server.url/otrs/json.pl?User=username&Password=password&Object=TicketObject&Method=ArticleSend&Data={"Subject":"[Ticket#100000] Test Ticket from OTRS"} 
+3

'파운드 기호'라고 말하면 # 또는 £를 의미합니까? '파운드'라는 이름은 일반적으로 인정되지 않습니다. :) – Spudley

답변

7

사용 Uri::escape :

use URI::Escape; 
my $safe = uri_escape($url); 

가에 대한 rfc1738를 참조하십시오 안전하지 않은 문자 목록.

+0

물론 그것은 ... 그런 잘못된 나무 아래에서 찾고있었습니다. – Variant

5

해시 기호 #special meaning in URLs이며 JSON에는 없습니다.

http://otrs.server.url/otrs/json.pl?User=username&Password=password&Object=TicketObject&Method=ArticleSend&Data={"Subject":"[Ticket 

그리고 그 원격 서버가 Data에서 JSON을 망가됩니다 것을 의미합니다 : 귀하의 URL은 아마 제거 서버가 심지어 그것을보기 전에 해시에서 잘립니다지고 있습니다. 해결 방법은 URL을 구성하기 위해 매개 변수를 붙여 넣기 전에 매개 변수를 URL 인코딩하는 것입니다. eugene y는 이것을 수행하는 방법을 알려줍니다.

관련 문제