我有一个非常简单的事情,只输出一些CSV格式的东西,但它必须是UTF-8.我在TextEdit或TextMate或Dreamweaver中打开这个文件,它正确地显示了UTF-8字符,但是如果我在Excel中打开它,它就是这样做的傻事.这是我在文档的头部所得到的:
header("content-type:application/csv;charset=UTF-8");
header("Content-Disposition:attachment;filename=\"CHS.csv\"");
Run Code Online (Sandbox Code Playgroud)
除了Excel(Mac,2008)不想正确导入它之外,这一切似乎都具有预期的效果.Excel中没有选项可以"以UTF-8打开"或其他任何东西,所以......我有点恼火.
尽管有很多人遇到同样的问题,我似乎无法在任何地方找到任何明确的解决方案.我最看重的是包含BOM,但我无法弄清楚如何做到这一点.正如你在上面看到的那样,我只是提供echo这些数据,我不会写任何文件.如果我需要,我可以这样做,我不是因为此时似乎不需要它.有帮助吗?
更新:我尝试回显echo pack("CCC", 0xef, 0xbb, 0xbf);我刚刚从试图检测BOM的网站上提取的BOM.但Excel只会在导入时将这三个字符附加到第一个单元格,并且仍会混淆特殊字符.
如何将数组转换为CSV文件?
这是我的阵列:
stdClass Object
(
[OrderList_RetrieveByContactResult] => stdClass Object
(
[OrderDetails] => stdClass Object
(
[entityId] => 1025298
[orderId] => 10952
[orderName] => testing
[statusTypeId] => 4652
[countryCode] => AU
[orderType] => 1
[invoiceNumber] => 0
[invoiceDate] => 0001-01-01T00:00:00
[userID_AssignedTo] => 11711
[shippingAmount] => 8.95
[shippingTaxRate] => 0
[shippingAttention] =>
[shippingInstructions] =>
[shippingOptionId] => 50161
[discountCodeId] => 0
[discountRate] => 0
[totalOrderAmount] => 408.45
[directDebitTypeId] => 0
[directDebitDays] => 0
[isRecur] =>
[nextInvoiceDate] => 0001-01-01T00:00:00
[endRecurDate] => 0001-01-01T00:00:00
[cycleTypeID] => …Run Code Online (Sandbox Code Playgroud)