PHP Notice:  iconv(): Detected an illegal character in input string in 파일 위치

 

파일위치와 라인을 찾아보니 아래와 같이 작성되어 잇는데요.

$view_content = iconv('CP949','UTF-8//ignore',$view_content);

 

php7.0 을 사용하는 서버 입니다.

  • profile

    언어셋이 CP949인 것을 UTF-8로 변경해주는 건데...
    내용상으로 보면 view_content 변수 안에 담긴 문자열의 언어셋이 CP949가 아니라고 하는 것 같아요.

    (영어에 약해서 아닐수도....)

    view_content의 언어셋이 CP949이면 위 명령을 실행하도록 해보세요.

    예전에 사용했던 function입니다.

    function Encoding_exChange($val,$type='UTF-8'){
    $enc = mb_detect_encoding($val, array('EUC-KR', 'CP949', 'UTF-8'));
    if($enc != $type){ $val = iconv($enc,$type, $val); }
    return $val;
    }
    $view_content = Encoding_exChange($view_content);

  • profile profile
    'CP949','UTF-8//ignore',$view_content 여기에 문법에 맞지 않는 문자가 있다는 뜻은 아닌가요?
  • profile profile
    $view_content 안에 들어가 있는 문자의 언어셋이 CP949가 아니라는 의미 같습니다.
    앞에 두개는 언어셋 이름이에요.
    CP949로 되어 있는 $view_content의 문자를 UTF-8로 바꿔라. 이런 명령인거죠.
    그런데 CP949가 아니니 에러가 뜬것이구요.

    mb_detect_encoding를 통해서 먼저 변수의 언어셋이 무엇인지를 알아내는 것이 선행과제로 보입니다.
    http://php.net/manual/kr/function.mb-detect-encoding.php
  • profile

    문자열의 charset을 CP949 에서 utf-8 로 컨버팅 해야 하는데.... 

    db에 저장할 때 한글이 깨져서 저장된 경우가 있을수 있으니
    $view_content = iconv('EUC-KR','UTF-8//ignore',$view_content); 바꾸어서 테스트 해보세요.

  • profile profile
    마찬가지로 메시지가 출력되네요...
  • profile profile
    그럼 해당 파일이 CP949 인지 아래 처럼 확인 해 보시기 바랍니다.
    iconv -f CP949 -t UTF-8 filename
  • profile profile
    몇개 사이트의 화면을 파싱해 와서 거기에 특정 문구를 분석하는 프로그램이에요.
  • profile profile
    그럼 먼저 파싱해온 문구가 CP949로 저장이 되는지 확인 하셔야 할것 같습니다.