Создание файла CSV в PHP с японскими символами и электронной почтой, символы конвертируются в?

У меня есть страница, которая при посещении выполняет запрос SQL и создает CSV с результатами, а затем отправляет результаты по электронной почте мне.

Однако японские символы из БД не кодируются должным образом, а файл CSV, который я получаю, только что был? на место каждого из японских символов.

Я попытался изменить «Content-Encoding», «Content-Transfer-Encoding», «Content-Type», чтобы получить настройку, которая работает, но независимо от того, что я пытаюсь, я все еще вижу только ?? где должно быть 東京

Это мой код, который генерирует CSV на лету и отправляет его.

$headers = "From: ".$email_from;$random_hash = md5(date('r', time()));
$mime_boundary = "==Multipart_Boundary_x{$random_hash}x";$headers .= "\nMIME-Version: 1.0\n" .
"Content-Type: multipart/mixed;\n" .
" boundary=\"{$mime_boundary}\"";$email_message = "This is a multi-part message in MIME format.\n\n" .
"--{$mime_boundary}\n" .
"Content-Type:text/html; charset=\"UTF-8\"\n" .
"Content-Transfer-Encoding: UTF-8\n\n" .
$this->email_html_msg . "\n\n";

$files_attached_cnt = 0;
foreach ($this->arr_file_data AS $file_data) {

$csv_file = $this->buildCSV($file_data, $mysqli);

if ($csv_file != "") {
$files_attached_cnt += 1;

$data = $csv_file;

$email_message .= "--{$mime_boundary}\n";

$email_message .= "Content-Type: application/csv; charset=\"UTF-8\"\n" .
" name=\"{$file_data['csv_file_name']}\"\n" .
"Content-Disposition: attachment;\n" .
" filename=\"{$file_data['csv_file_name']}\"\n" .
"Content-Transfer-Encoding: UTF-8\n" .
"Content-Encoding: UTF-8\n\n" .
$data . "\n\n";
}
}

$email_message .= "--{$mime_boundary}--\n";

$this->arr_file_data = array();

if ($this->debugFlag) {
echo "FINISHED.";
}

Нужно ли мне полностью менять свой код или есть настройка кодировки, которая будет работать в этом случае?

заранее спасибо

0

Решение

нашел, что ответ должен был установить мой набор символов sql запроса в utf8 прежде, чем я фактически начал запрос,

Я добавил это

$mysqli->set_charset('utf8');

сразу после указания объекта mysqli.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]