2017-12-24 12 views
0

인터넷에서 힙을 검색했지만 코드가 작동하지 않는 것 같습니다. 이처럼 보이는 이메일에 내 PHP 코드 결과 :PHP 양식을 사용하여 보낸 메일에서 일본어 텍스트가 깨져서 표시됨

叹 涟 : 밥 メ ッ セ 〖ジ : 銇 撱 倱 銇  仭 銇 

그들은 (일본어 문자)과 같아야합니다

名 前 : 밥 メ ッ セ ー ジ : こ ん い ち は

필드에 영어 문자를 입력 할 때 그것은 잘 작동

:.

名 前 : 크리스 メ

다음은 코드입니다. 웹 사이트 페이지 자체는 euc-jp로 인코딩됩니다. 이메일 제목이 문제없이 표시됩니다. 내 Mac 메일 응용 프로그램 및 내 안드로이드 장치 (Gmail 응용 프로그램, 안드로이드 메일 응용 프로그램)에서 텍스트가 왜곡됩니다. 어쩌면 htmlspecialchars 함수에 문제가있을 수 있습니다. php에 대해 충분히 잘 모르겠습니다. 제발 도와주세요!

<?php 
// Check for empty fields 
if(empty($_POST['name'])  || 
    empty($_POST['email'])  || 
    empty($_POST['message']) || 
    !filter_var($_POST['email'],FILTER_VALIDATE_EMAIL)) 
    { 
    echo "No arguments Provided!"; 
    return false; 
    } 

$name = strip_tags(htmlspecialchars($_POST['name'])); 
$email_address = strip_tags(htmlspecialchars($_POST['email'])); 
$message = strip_tags(htmlspecialchars($_POST['message'])); 


$to = "[email protected]\r\n"; 
$email_subject = "お問い合わせ\r\n"; 
$email_body = "名前: $name<br><br>メッセージ: $message\r\n"; 
$headers = "From: [email protected]\r\n"; 
$headers .= "Reply-To: $email_address\r\n"; 
$headers .= "Content-Type:text/html; charset=euc-jp\r\n"; 
mail($to,'=?euc-jp?B?'.base64_encode($email_subject).'?=',$email_body,$headers); 
return true;    
?> 

업데이트 코드 : 나는 당신의 코드가 완벽하게 나를 위해 잘 작동하지만 왜 몰라

<?php 
// Check for empty fields 
if(empty($_POST['name'])  || 
    empty($_POST['email'])  || 
    empty($_POST['message']) || 
    !filter_var($_POST['email'],FILTER_VALIDATE_EMAIL)) 
    { 
    echo "No arguments Provided!"; 
    return false; 
    } 
$name = strip_tags(htmlspecialchars($_POST['name'])); 
$email_address = strip_tags(htmlspecialchars($_POST['email'])); 
$message = strip_tags(htmlspecialchars($_POST['message'])); 
$to = '[email protected]'; 
$email_subject = "お問い合わせ"; 
$email_body = "名前: $name\n\n"."メッセージ: $message"; 
$headers = "From: [email protected]\n"; 
$headers .= "Reply-To: $email_address\n"; 
mail($to,$email_subject,$email_body,$headers); 
return true;    
?> 
+0

이 스크립트는 실제로 UTF-8과 같은 호환되지 않는 무언가를 EUC-JP로 작성되지 않고), 나는 당신이 당신의 브라우저 나 컴퓨터 언어 설정을 확인하는 것이 좋습니다

<?php $_POST['name']= 'Bob'; $name = $_POST['name']; $_POST['email']= '[email protected]'; $_POST['message']= ' こんいちは'; echo $_POST['name']; // Check for empty fields if(empty($_POST['name']) || empty($_POST['email']) || empty($_POST['message']) || !filter_var($_POST['email'],FILTER_VALIDATE_EMAIL)) { echo "No arguments Provided!"; return false; } $name = strip_tags(htmlspecialchars($_POST['name'],'EUC-JP')); $email_address = strip_tags(htmlspecialchars($_POST['email'])); $message = strip_tags(htmlspecialchars($_POST['message'],'EUC-JP')); $to = '[email protected]'; $email_subject = "お問い合わせ"; $email_body = "名前: $name\n\n"."メッセージ: $message"; $headers = "From: [email protected]\r\n"; $headers .= "Reply-To: $email_address\n"; mail($to,$email_subject,$email_body,$headers); echo 'email sent'; return true; ?> 

: 내가 함께 시도? – Synchro

+0

PHP 매뉴얼을 보시면,'htmlspecialchars()'인자 셋이 인자로 사용됩니다. 기본값은 utf-8입니다. 대부분의 함수/라이브러리가 PHP에서 utf-8로 기본 설정되지 않은 경우 많은 함수/라이브러리가 사용됩니다. 예 fgetcsv, ... – frz3993

+0

예, 스크립트는 euc-jp입니다. 그런 주장을한다면,이게 옳은 것 같군요? (위 참조) – Chris

답변

0

;

+0

테스트 해 주셔서 감사합니다! 위의 코드를 현재 사용중인 코드로 업데이트했습니다. 파일 인코딩은 UTF-8로 설정되고, 포함 된 페이지 문자 세트는 euc-jp로 설정됩니다. Mac의 메일 앱에서 이메일을받을 때 아무런 문제가 없습니다. 그러나, 안드로이드에서 볼 때 그것은 왜곡됩니다 ... 무엇이 이것의 원인 일 수 있었습니까? – Chris

+0

다른 일본어 메일도 모두 추가해야합니다. 안드로이드에서 잘 작동합니다. 위 코드를 사용하여 전송 된 것만이 깨진 상태로 표시됩니다. – Chris

+0

Android 휴대 전화에서 문제없이 동일한 메일을 읽을 수 있습니다. –

관련 문제