Tim*_*imm 132 windows csv macos excel utf
我们有一个Web应用程序,可以导出包含UTF-8的外来字符的CSV文件,没有BOM.Windows和Mac用户都在Excel中获得垃圾字符.我尝试用BOM转换为UTF-8; Excel/Win很好用,Excel/Mac显示乱码.我正在使用Excel 2003/Win,Excel 2011/Mac.这是我尝试过的所有编码:
Encoding BOM Win Mac
-------- --- ---------------------------- ------------
utf-8 -- scrambled scrambled
utf-8 BOM WORKS scrambled
utf-16 -- file not recognized file not recognized
utf-16 BOM file not recognized Chinese gibberish
utf-16LE -- file not recognized file not recognized
utf-16LE BOM characters OK, same as Win
row data all in first field
Run Code Online (Sandbox Code Playgroud)
最好的是具有BOM的UTF-16LE,但CSV不被识别.字段分隔符是逗号,但分号不会改变.
是否有任何编码在两个世界都有效?
mik*_*ter 57
WINDOWS-1252在处理Excel时,我发现编码是最不令人沮丧的.由于它基本上是微软拥有自己的专有字符集,因此可以假设它可以在Mac和Windows版本的MS-Excel上运行.两个版本至少包括相应的"文件源"或"文件编码"选择器,它正确地读取数据.
根据您的系统和使用的工具上,该编码也可以被命名为CP1252,ANSI,Windows (ANSI),MS-ANSI或只Windows,其他变化之中.
此编码是ISO-8859-1(aka LATIN1和其他)的超集,因此ISO-8859-1如果WINDOWS-1252由于某种原因无法使用,则可以回退.请注意,ISO-8859-1缺少一些字符,WINDOWS-1252如下所示:
| Char | ANSI | Unicode | ANSI Hex | Unicode Hex | HTML entity | Unicode Name | Unicode Range |
| € | 128 | 8364 | 0x80 | U+20AC | € | euro sign | Currency Symbols |
| ‚ | 130 | 8218 | 0x82 | U+201A | ‚ | single low-9 quotation mark | General Punctuation |
| ƒ | 131 | 402 | 0x83 | U+0192 | ƒ | Latin small letter f with hook | Latin Extended-B |
| „ | 132 | 8222 | 0x84 | U+201E | „ | double low-9 quotation mark | General Punctuation |
| … | 133 | 8230 | 0x85 | U+2026 | … | horizontal ellipsis | General Punctuation |
| † | 134 | 8224 | 0x86 | U+2020 | † | dagger | General Punctuation |
| ‡ | 135 | 8225 | 0x87 | U+2021 | ‡ | double dagger | General Punctuation |
| ˆ | 136 | 710 | 0x88 | U+02C6 | ˆ | modifier letter circumflex accent | Spacing Modifier Letters |
| ‰ | 137 | 8240 | 0x89 | U+2030 | ‰ | per mille sign | General Punctuation |
| Š | 138 | 352 | 0x8A | U+0160 | Š | Latin capital letter S with caron | Latin Extended-A |
| ‹ | 139 | 8249 | 0x8B | U+2039 | ‹ | single left-pointing angle quotation mark | General Punctuation |
| Œ | 140 | 338 | 0x8C | U+0152 | Œ | Latin capital ligature OE | Latin Extended-A |
| Ž | 142 | 381 | 0x8E | U+017D | | Latin capital letter Z with caron | Latin Extended-A |
| ‘ | 145 | 8216 | 0x91 | U+2018 | ‘ | left single quotation mark | General Punctuation |
| ’ | 146 | 8217 | 0x92 | U+2019 | ’ | right single quotation mark | General Punctuation |
| “ | 147 | 8220 | 0x93 | U+201C | “ | left double quotation mark | General Punctuation |
| ” | 148 | 8221 | 0x94 | U+201D | ” | right double quotation mark | General Punctuation |
| • | 149 | 8226 | 0x95 | U+2022 | • | bullet | General Punctuation |
| – | 150 | 8211 | 0x96 | U+2013 | – | en dash | General Punctuation |
| — | 151 | 8212 | 0x97 | U+2014 | — | em dash | General Punctuation |
| ˜ | 152 | 732 | 0x98 | U+02DC | ˜ | small tilde | Spacing Modifier Letters |
| ™ | 153 | 8482 | 0x99 | U+2122 | ™ | trade mark sign | Letterlike Symbols |
| š | 154 | 353 | 0x9A | U+0161 | š | Latin small letter s with caron | Latin Extended-A |
| › | 155 | 8250 | 0x9B | U+203A | › | single right-pointing angle quotation mark | General Punctuation |
| œ | 156 | 339 | 0x9C | U+0153 | œ | Latin small ligature oe | Latin Extended-A |
| ž | 158 | 382 | 0x9E | U+017E | | Latin small letter z with caron | Latin Extended-A |
| Ÿ | 159 | 376 | 0x9F | U+0178 | Ÿ | Latin capital letter Y with diaeresis | Latin Extended-A |
Run Code Online (Sandbox Code Playgroud)
请注意,缺少欧元符号.这张桌子可以在Alan Wood找到.
每种工具和语言的转换都有所不同.但是,假设您有一个query_result.csv您知道已UTF-8编码的文件.将其转换为WINDOWS-1252使用iconv:
iconv -f UTF-8 -t WINDOWS-1252 query_result.csv > query_result-win.csv
Run Code Online (Sandbox Code Playgroud)
Dun*_*art 25
对于带有BOM的UTF-16LE,如果使用制表符作为分隔符而不是逗号,Excel将识别字段.它的工作原理是Excel实际上最终使用其Unicode*.txt解析器.
警告:如果文件在Excel中编辑并保存,它将保存为制表符分隔的ASCII.现在的问题是,当您重新打开文件时,Excel假定它是真正的CSV(带逗号),看到它不是Unicode,因此将其解析为逗号分隔 - 因此将对其进行哈希处理!
更新:至少今天在Excel 2010(Windows)中似乎没有发生上述警告,尽管在以下情况下保存行为似乎存在差异:
相比:
Tim*_*imm 22
最低点是:没有解决方案.无论您使用什么编码或箍跳,Excel 2011/Mac都无法正确解释包含变音符号和变音符号的CSV文件.我很高兴听到有人告诉我不同!
Wal*_*oss 10
您只尝试过以逗号分隔和以分号分隔的CSV.如果你曾尝试使用制表符分隔的CSV(也称为TSV),你会找到答案:
UTF-16LE与BOM(字节顺序标记),制表符分隔
但是:在评论中你提到TSV不是你的选择(我在你的问题中找不到这个要求).这真遗憾.这通常意味着您允许手动编辑TSV文件,这可能不是一个好主意.视觉检查TSV文件不是问题.此外,可以将编辑器设置为显示特殊字符以标记选项卡.
是的,我在Windows和Mac上试过这个.
| 归档时间: |
|
| 查看次数: |
136809 次 |
| 最近记录: |