PHP ve Rus Mektupları

3 Cevap php

What is happening with Russian letters when sending via PHP request to ... a mail, by e.g.? the "hardcoded" russians letters are displayed properly, but from the Form's textboxex with hieroglyphs:

HTML sayfası:

<tr>
 <td style="width: 280px">Содержание работ</td>
 <td><input type="text" id="workContent"/></td>
</tr>

PHP sayfası:

$WorkContent = $_REQUEST["workContent"]; //Содержание работ
// ...
$WorkContentLabel = "Содержание работ";
// ...
$message .= $WorkContentLabel . ":\t" . $WorkContent . "\n";
// ...
// email stuff (data below changed)
$to = "test@gmail.com";
$from = "me@domain.com";
$from_header = "From: Russian site command ";

$subject = "Message with russian letters";
$subject = '=?utf-8?B?'.$subject.'?=';
$message .= $subject;

// send message
mail($to, $subject, $message, $from_header);

User enter some content in the textbox: alt text

ve gönderir formu.

What do I receive (in GMAIL):

Содержание работ:       1)Содержание 2)RABOT

Yani, hard-coded Rusça metin - Tamam, sent by the form Rusça metin - Tamam - NOK, forma ASCII metin tarafından gönderildi.

Biri ne kodlama ile bu garip davranışının nedeni olabilir biliyor mu?

EDIT: used

$subject = "  оборудования  - subject with russian letters";
$subject = '=?UTF-8?B?' . base64_encode($subject) . '?=';
$message .= $subject;

obtains a subject like �����������ÿ - subject with russian letters

3 Cevap

Bu gibi base64_encode() sizin $subject gerekir:

$subject = '=?UTF-8?B?' . base64_encode($subject) . '?=';

Ayrıca UTF-8 hiçbir BOM olarak kodlanmış .php dosyayı kaydetmeden emin olun.


This question might also interest you: Is this the correct way to send email with PHP?

Lütfen kodlamaları kontrol edin:

  1. HTML kodlaması (<meta http-equiv..> etiketi)
  2. PHP / HTML / şablon dosyası kodlama (ne editörü kodlayan dosyayı kaydeder)
  3. Veritabanı kodlama (eğer varsa) (ne tablolardaki verileri şifreleyen olduğunu)
  4. Veritabanı bağlantısı kodlama (eğer varsa) (veritabanı bağlantıları için kullanılır ne kodlama)

ve her şey için UTF-8 kullanmak.

Yanı sıra Alix senin Subject satırında RFC2047 kodlanmış-kelime base64 hakkında ne dedi gibi, ayrıca başlıkları ekleyerek, postanın gövdesinde UTF-8 kodlanmış metin beklemek mailler söylemek gerekir:

MIME-Version: 1.0
Content-Type: text/plain;charset=utf-8

aksi takdirde muhtemelen yanlış tahmin etmek mailler kalmış.