2011-01-21 42 views
0

在Linux上創建文本文件格式爲Dos \ Windows並以UTF-8編碼時出現問題。使用Dos Windows編碼文本文件並使用UTF-8編碼爲PHP

什麼Im做是這樣的:

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」,將編碼作爲其完成所有需要的多數民衆贊成下。我在這裏錯過了什麼嗎?

回答

0

我懷疑你想成爲gz編碼記錄那樣的記錄。

如果您需要將其壓縮,請考慮整理它,然後在最後寫入一次,或者gzipping創建文件。

$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); 
0

"\r\n"是正確的。如果數據庫表已經包含UTF-8,則utf8_encode()是冗餘的。但是我看到的真正問題是您應該只包裝while {...}循環中的$ product變量的串聯。您無法爲每行重新啓動gzencode並將塊寫入文件。當您嘗試打開它時會導致錯誤。與其多次調用gzencode,只需打開輸出文件gzopen()而不是fopen()