PHP에서 x-imap4-modified-utf7 문자열을 UTF-8로 인코딩
TL;DR
imap_utf7_decode()
아니고 mb_convert_encoding()
에서 OK.원래 x-imap4-modified-utf7이란?
어떤 것인가
x-imap4-modified-utf7
라는 문자 코드는, 나도 이 문제에 직면할 때까지는 묻지 않았었습니다…조금 살펴 보면, 왜냐하면 기본 UTF-7이라는 것의 수정 버전이며, IMAP4를 사용하여 폴더 이름을 표시하기 위해 개선 된 것 같다?
어디에서 사용되는지
이 문제에 직면 한 것은 Thunderbird라는 메일 클라이언트 소프트웨어의 필터 설정입니다.
여기에는 어떤 폴더에 메일을 저장할까. 라는 정보를 가지는 부분이 있어, 이 폴더명의 encode에 사용되고 있었습니다.
PHP에서 사용
imap_utf7_decode()
조금 구그하면 PHP에는 imap_utf7_decode 라는 함수가 준비되어 있는 것을 알 수 있습니다.
수정 버전
UTF-7
의 text
를 ISO-8859-1
문자열로 디코딩합니다.그럼
UTF-8
로 사용하고 싶은 경우는, 다시 한번 ISO-8859-1
로부터 UTF-8
로 변환하지 않으면 안 되는 것일까.우선 움직이는 테스트
echo imap_utf7_decode('actionValue="imap://hogehoge.com/INBOX/00-&MMYwuTDI-/&MGYwWTBo-"');
PHP Fatal error: Call to undefined function imap_utf7_decode()
… … 엣.
mb_convert_encoding()
실은 이
x-imap4-modified-utf7
, mb_convert_encoding만으로도 변환이 가능했습니다!조속히 시험하는 시험
echo mb_convert_encoding('actionValue="imap://hogehoge.com/INBOX/00-&MMYwuTDI-/&MGYwWTBo-"', 'utf8', 'utf7-imap');
'actionValue="imap://hogehoge.com/INBOX/00-テスト/てすと'
브라보 !!
imap_utf7_decode
하지만 undefined
라든지 말하고 나서 버전의 확인도 했지만 잘 모르겠다…보통
mb_convert_encoding
로 인코딩이 되어 살아났습니다.Thunderbird를 뭔가 사용하거나, 그 이외에도 폴더 이름 등을 다루는 것과 연계 할 때 필요할지도.
「
&MMYwuTDI-
」 이런 걸까 「 &MGYwWTBo-
」 이런 문자를 인코딩하게 되면 한번 이 기사를 기억해 보세요.
Reference
이 문제에 관하여(PHP에서 x-imap4-modified-utf7 문자열을 UTF-8로 인코딩), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/shy_azusa/items/19bff03dd0180d4df62c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)