【问题标题】:detect user's native character encoding to serve correct CSV file检测用户的本机字符编码以提供正确的 CSV 文件
【发布时间】:2022-10-20 00:02:48
【问题描述】:
网站需要将编码为 windows-1252 的 CSV 文件提供给 Windows 工作站上的用户,并将编码为 UTF-8 的文件提供给其他所有人。我可以使用两个 URL 链接来做到这一点,但是用户必须自己弄清楚要单击哪一个。
用户通常不知道也不关心他们的工作站使用的是哪种字符编码。我宁愿使用 JavaScript 来自动确定要请求的 URL。
如何确定用户的本机字符编码?
我宁愿确定编码而不是 Windows,以便在 Windows 切换到 UTF-8 时使应用程序面向未来。
【问题讨论】:
-
Windows 也可以处理 UTF8 csv 文件。他们只需要BOM。
标签:
javascript
csv
browser
download
【解决方案1】:
谢谢克里斯托弗,BOM 是要走的路。转换为 UTF-8 并包含 BOM 会创建一个通用 CSV 文件,该文件可以在 Windows 和非 Windows 设备中打开。
Classic ASP VBscript 行中的这行代码写入 UTF-8 BOM,它必须是文件的前三个字符。
Response.Write Chr(239) & Chr(187) & Chr(191)
这些 VBscript 行转换文本字符串力量从 windows-1252 到 utf-8。
Str = Str & "" '如果 Str 为空
设置 Stream = Server.CreateObject("ADODB.Stream")
流打开
Stream.Charset = "utf-8"
Stream.WriteText 字符串
Stream.Position = 0
Stream.Type = 2 'adTypeText
Stream.Charset = "windows-1252"
Str = Stream.ReadText(-1) 'adReadAll
流.关闭