Проблемы кодировки символов PHPMailer

Я не уверен, но кросс-аппликации можно избежать, если я пойму, что ты делаешь. и это поможет с производительностью, но, поскольку у меня нет доступа к данным, вы должны проверить их и посмотреть.

, поэтому я начну после того, как вы поместите данные во временную таблицу. попробуйте следующее: -

 ;with TempWithSum as (
 --get the sum partition by string_groupby, int_booking_year
  select *,sum(float_total) over(partition by string_groupby, int_booking_year) as float_sum_total
  from @temp_00
 ),NamesCat as(
  --get all customer names grouped by string_groupby
  select string_groupby, STRING_AGG(cast(string_customer_tpi as varchar(max)), '|') as string_tpis_concat
  from @temp_00
  group by string_groupby
 ),AllData as(
 --get the row number partition string_groupby and ordered by string_groupby, float_sum_total
  select string_customer_name, string_customer_region, string_industry_group, string_city, z.string_state,
         string_country, string_booking_type, string_sales_branch, string_sales_region, string_sales_area,
         int_booking_year, float_sum_total, string_tpis_concat, string_groupby
        ,ROW_NUMBER() over (partition by string_groupby order by string_groupby, float_sum_total) as row_num
    from TempWithSum z
    inner join NamesCat on NamesCat.string_groupby=TempWithSum.string_groupby
  )
  select * from AllData where row_num=1

Надеюсь, что это сработает и даст нужный вам результат в ожидаемые вами сроки.

Примечание: я знаю, что вы хотели исключить номер строки, и я предлагаю исключить перекрестное применение, но ваша цель - производительность.

170
задан Scott Weldon 10 October 2016 в 20:59
поделиться

4 ответа

Если вы на 100% уверены, что $ message содержит ISO-8859-1, вы можете использовать utf8_encode , как говорит Дэвид. В противном случае используйте mb_detect_encoding и mb_convert_encoding в сообщении $.

Также обратите внимание, что

$mail -> charSet = "UTF-8"; 

следует заменить на:

$mail->CharSet = 'UTF-8';

и помещают после создания экземпляра класса (после нового ). Свойства чувствительны к регистру! См. документ PHPMailer для получения списка и точного написания.

Также по умолчанию PHPMailer имеет кодировку 8bit , что может быть проблематичным с данными UTF-8. Чтобы исправить это, вы можете сделать:

$mail->Encoding = 'base64';

Обратите внимание, что 'quoted-printable' , вероятно, тоже будет работать в этих случаях (и, возможно, даже 'binary' ). Подробнее см. RFC1341 - Поле заголовка Content-Transfer-Encoding .

427
ответ дан 23 November 2019 в 20:45
поделиться

Можно использовать обоих:

$mail->CharSet = 'UTF-8';
$mail->CharSet = 'utf-8';

И если Вы хотите изменить текстовое направление, можно использовать:

$mail->msgHTML('<div style=" direction: rtl;">نص تجريبي</div>');
-1
ответ дан 23 November 2019 в 20:45
поделиться

Если в вашем сообщении используется Latin1, вы можете использовать utf8_encode В любом случае у меня работает.

-1
ответ дан 23 November 2019 в 20:45
поделиться

$ mail -> charSet = "UTF-8"; --- эта строка должна находиться в $ mail = new PHPMailer (); линия.

пфф ..

-5
ответ дан 23 November 2019 в 20:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: