티스토리 뷰

대개 한국 언론사들의 컨텐츠 유통 프로토콜은 FTP 이고
파일 형식은 XML 또는 TXT

RESTFul 방식으로 하는데는 본적이 없고
RSS Feed 비슷한거라도 이용한다면 이 바닥에선 엄청나게 근대적이라 볼 수 있다.

최근 XX일보 계열사의 컨텐츠 제휴 개발작업을 하게 되었는데
이곳은 TXT 파일을 요구하였다.

클라이언트측 요구사항 중 데이터 구분자로
Leftwards Arrow를 요구하기에
그렇게 해서 파일을 보내줬더니

그 문자가 아니고 역 화살표 특수문자라고 하며
예제 파일을 보내줬기에 비교분석을 위해
HEX 코드를 확인해봤다.

  • 클라이언트 요구 구분자 HEX Code = 0x1B
  • 내가 사용한 표준 HEX Code = 0xA1 0xE7

클라이언트가 말하는 역 화살표 특수문자는
대체 정체가 뭔지 아직도 모르겠고
ASCII 테이블에는 당연히 존재하지도 않는 문자이며

클라이언트가 고대 유물과도 같은 euc-kr 인코딩을 쓰기에
당연하게도 유니코드 테이블에도 없는

비표준 문자이기에
운영서버나 개발 환경인 utf-8 환경에서 ?? 와 같이 깨지는 문자로 나타나기에
str_replace 등의 함수는 쓸 수가 없었다.

해결하려 기획했던 개발 로직은
HEX 코드로 전환 후
HEX 코드 치환하고 다시 문자로 전환하는 계획을 세웠고
아래와 같은 코드를 통해
utf-8 환경에서 비표준 euc-kr 문자 치환에 성공하였다.

// 데이터간 항목 구분용으로 쓰인 Leftwards Arrow를 koreadaily 측에서 원하는 비표준 구분자로 치환
// bin2hex() 를 쓰면 2개의 소문자가 공백없이 이어지는 HEX 코드가 반환됨
$hex_tpl = bin2hex($tpl);
$hex_tpl = str_replace('a1e7', '1b', $hex_tpl);
$tpl = pack("H*", $hex_tpl);

euc-kr 클라이인트들이 각성하여 더 늦기 전에 utf-8 로 업그레이드 하기를 바란다.

위 euc-kr 쓰는 클라이언트는 그 언론사의 미국 계열사이며 개그 아님!

댓글