1

フォームがあり、PHP ファイルを使用してその内容をテキスト ファイルに書き込みます。私の問題は、特殊文字 (è à á ä など) を書き込もうとすると、他の奇妙な文字 (è é ã など) に置き換えられることです。

私は周りを見回しましたが、さまざまなフォーラムで提案された解決策のどれも私の問題を解決しませんでした.

ここで、私が話している HTML フォームを見つけることができます: http://beginninghtml.altervista.org/InfinitySMS_Web/index.html

私のhtmlフォームを処理するPHPファイルは次のhttp://beginninghtml.altervista.org/InfinitySMS_Web/process-form-data.phpとおりです。

$phonenum = $_POST['phonenum'];
$messagetext = $_POST['messagetext'];
$types=$_POST['types'];
$message=stripslashes($messagetext);
//if no message entered and no mobile num entered print an error 
if (empty($phonenum) && empty($messagetext)){
print "Non sono stati inseriti il testo del messaggio e il numero del destinatario.<br>Inseriscili per poter inviare il tuo messaggio.";
}
//if no message entered send print an error 
elseif (empty($messagetext)){
print "Non è stato inserito alcun testo per il messaggio.<br>Inseriscilo per poter inviare il tuo messaggio.";
}
//if no mobile num entered send print an error 
elseif (empty($phonenum)){
print "Non è stato inserito il numero del destinatario.<br>Inseriscilo per poter inviare il tuo messaggio.";
}
elseif (strlen($phonenum)<11){
    if (strlen($phonenum)>9){
        //if the form has both a phone number and a text message. 
        //write data to the file
        $name = $_POST['phonenum'];
        $email = $_POST['messagetext'];
        $fp = fopen("formdata.txt", "a");
        $savestring = $name . "!$@$!;" . $email . "!$@$!;\n";
        fwrite($fp, $savestring);
        fclose($fp);
        header("location:success.html");
    }
    else
    {
        print "Il numero di cellulare inserito non è corretto: il numero del destinatario deve contenere 10 cifre.";
    }
}

いわゆる「奇妙な」文字を含む txt ファイルの URL は次のとおりです: http://beginninghtml.altervista.org/InfinitySMS_Web/formdata.txt

4

1 に答える 1

2

UTF-8エンコーディングの設定を忘れたと思いますheader()

Add header('Content-Type: text/html; charset=utf-8');そして、すべて問題ないはずです。

また、data.txtファイルを形成するものもutf-8でエンコードされていることを確認してください

于 2013-03-28T14:49:09.183 に答える