Кодировать текстовые файлы в Dos \ Windows и кодировать в UTF-8 из PHP - PullRequest
0 голосов
/ 22 января 2011

У меня проблема с созданием текстового файла в linux, отформатированного как Dos \ Windows и закодированного в UTF-8.

Что я делаю, это:

while($row = mysql_fetch_array($result))
 {
  $product =  $row['products_id']
  . ' ' . $row['products_name']
  . ' ' . $row['manufacturers_name']
  . ' ' . $row['products_model']
  //. ' ' . $row['products_sku']
  . ' ' . zen_href_link('product_info', 'cPath=' . $cPath .  '&products_id=' . $row['products_id']) 
  . ' ' . number_format($row['products_price'],2)
  . ' ' . strip_tags(zen_get_products_description($row['products_id']))
  . ' ' . HTTP_SERVER . '/' .DIR_WS_IMAGES . $row['products_image']
  . ' ' . 'electronics'
  . "\r\n";
 $product = utf8_encode($product);
 fwrite($fh, gzencode($product,9)); 

У меня сложилось впечатление "\ r \ n", и все, что нужно, - это сделать кодировку. Я что-то здесь упускаю?

Ответы [ 2 ]

0 голосов
/ 22 января 2011

"\r\n" правильно. utf8_encode() является избыточным, если таблица базы данных уже содержит UTF-8. Но настоящая проблема, которую я вижу, заключается в том, что вам следует заключить только конкатенацию переменной $ product в цикл while {...}. Вы не можете перезапустить gzencode для каждой строки и записать куски в файл. Это приведет к ошибке при попытке открыть его. Вместо того, чтобы вызывать gzencode несколько раз, просто откройте ваш выходной файл с gzopen() вместо fopen().

0 голосов
/ 22 января 2011

Я сомневаюсь, что вы хотите, чтобы gz-кодировал запись за записью, как эта.

Если вам нужно, чтобы он был разархивирован, рассмотрите его сопоставление, а затем напишите один раз в конце или разархивируйте файл после создания.

$productList = '';

while($row = mysql_fetch_array($result)) {
  $product =  $row['products_id']
  . ' ' . $row['products_name']
  . ' ' . $row['manufacturers_name']
  . ' ' . $row['products_model']
  //. ' ' . $row['products_sku']
  . ' ' . zen_href_link('product_info', 'cPath=' . $cPath .  '&products_id=' . $row['products_id']) 
  . ' ' . number_format($row['products_price'],2)
  . ' ' . strip_tags(zen_get_products_description($row['products_id']))
  . ' ' . HTTP_SERVER . '/' .DIR_WS_IMAGES . $row['products_image']
  . ' ' . 'electronics'
  . "\r\n";

  $productList .= $product;
}

fwrite($fh, gzencode(utf8_encode($product),9));
fclose($fh);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...