2013-10-04 4 views
0

나는이 질문이 너무 구체적이지 않기를 바랍니다 ... 어떤 생각을 하셔도 좋습니다.양식을 제출할 때 Mojibake가 답장 전자 메일을 보낼 때마다 (그러나 항상 그렇지는 않음)

누군가가 내 연락처 양식 (UTF-8로 인코딩 됨)을 채우면 데이터가 MySQL 데이터베이스 (UTF-8로 인코딩 됨)에 올바르게 입력되고 양식을 작성한 사람에게 회신 이메일이 전송됩니다 (UTF- 8 인코딩 됨).

데이터를 영어로 입력하면 모두 좋습니다. 데이터를 일본어로 입력하면 문자가 데이터베이스에서 올바르게 렌더링되고 회신 전자 메일 (데이터베이스에서 성 및 이름을 가져 와서 일본어로 완전히 작성 됨)도 올바르게 렌더링됩니다. 좋았어, 그렇지?

간혹 전자 메일은 일반적으로 간지 문자를 올바르게 렌더링하는 주소로 전송 된 경우에도 문자를 모지 베크로 렌더링합니다.

오류를 재현 할 수 없었지만 고객이 회신 이메일의 스크린 샷을 보낸 경우에 문제가 발생했음을 알고 있습니다. 다른 누구도이 문제에 부딪 혔습니까? 나는 약간의 손실이 있습니다. Sendmail 소프트웨어를 사용하여 전자 메일을 보냅니다.

감사

답변

1

시도는 일본어가있는 경우 감지 만약 그렇다면, 전형적인 일본어 인코딩을 사용하여 전송. 나는거야,이를 작성하는 ..이 물건은 진짜 고통 등등 어쩌면 러시아어, 시간을내어

function isKanji($str) { 
    return preg_match('/[\x{4E00}-\x{9FBF}]/u', $str) > 0; 
} 

function isHiragana($str) { 
    return preg_match('/[\x{3040}-\x{309F}]/u', $str) > 0; 
} 

function isKatakana($str) { 
    return preg_match('/[\x{30A0}-\x{30FF}]/u', $str) > 0; 
} 

function isJapanese($str) { 
    return $this->isKanji($str) || $this->isHiragana($str) || $this->isKatakana($str); 
} 

$userinputtext = "日本語を認識したいです!"; 

if (isJapanese($userinputtext)){ 

    mb_language("ja"); 
    $subject = mb_encode_mimeheader($subject,"ISO-2022-JP-MS"); 
    $body = mb_convert_encoding($body,"ISO-2022-JP-MS"); 
    $mail->CharSet = 'ISO-2022-JP'; 
    $mail->Encoding = "7bit"; 

    } 
+0

감사합니다 - 당신은 한자를 사용하는 다른 모든 언어에 대해이 작업을 수행 할 것 확실히 그것을 줘. 그러나 CharSet에 관해서는 데이터베이스와 스크립팅 전체에서 일관성을 유지하는 것이 가장 좋습니다. 이상적으로 UTF-8을 모두 렌더링하고 싶습니다. IS0-2022-JP를 UTF-8로 변경할 수 있습니까? 그렇다면 $ mail-> Encoding을 다른 무언가로 조정할 수 있습니까? 다시 한번 감사드립니다. 당신 말이 맞아요,이 모기 베크 문제는 제가 몇 년 동안 (일에 대해) 함께 일해 왔던 악몽입니다. – Coleen

관련 문제