搜索
查看: 6701|回复: 4

求助:如何用 string.load 读取UTF-8 BOM 和无BOM的文件呢?

[复制链接]

11

主题

43

帖子

335

积分

二级会员

Rank: 3Rank: 3

积分
335
QQ
发表于 2011-12-22 13:33:01 | 显示全部楼层 |阅读模式
求助:如何用 string.load 读取UTF-8 BOM 和无BOM的文件呢?
main22.htm 分别尝试用 utf-8 无bom或者标准utf-8保存
  1. <html>
  2. <head>
  3. <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
  4. <style>
  5. @import "styles/master.css";
  6. @import "styles/main1.css";
  7. </style>
  8. </head>
  9. <body id="body">
  10. 测试中文s
  11. <br />
  12. test

  13. <popup>
  14. <menu .context id="popMenu">
  15. <li id="mnAbout">关于</li>
  16. <li id="mnClose">关闭程序</li>
  17. </menu>
  18. </popup>

  19. </body>
  20. </html>
复制代码

str = string.load("/res/main22.htm");
str = string.fromto(str);
当 main22.htm是utf-8格式保存的时候, 用 string.fromto ,输出的str 为?<html>,等于多了个?号,而因为测试有限,觉得也不该单纯的删除fromto后第一个字符来实现吧?

当 main22.htm是utf-8 无bom 格式保存的时候, 用 string.fromto ,输出的str 为<html> 就和源文件一摸一样了。

该怎样考虑写个函数来判断文件的编码格式并处理呢? 求解,谢谢






回复

使用道具 举报

5

主题

442

帖子

2420

积分

五级会员

Rank: 8Rank: 8

积分
2420
发表于 2011-12-22 15:59:02 | 显示全部楼层

[color=#0000ff]import[/color][color=#000000] fsys.codepage; str = fsys.codepa

import fsys.codepage;

str = fsys.codepage.load(
"/utf8file.html","UTF-8")
回复

使用道具 举报

5

主题

442

帖子

2420

积分

五级会员

Rank: 8Rank: 8

积分
2420
发表于 2011-12-22 16:00:30 | 显示全部楼层

[i=s] 本帖最后由 神码 于 2011-12-22 16:01 编辑 [/i] 文件操作相关的需求,可以到标准库的fsys下面找找, fsys.code

本帖最后由 神码 于 2011-12-22 16:01 编辑

文件操作相关的需求,可以到标准库的fsys下面找找,
fsys.codepage 用于转换文件内码, 可以看看该库的源码了解相关的一些技术.
回复

使用道具 举报

13

主题

122

帖子

965

积分

三级会员

Rank: 4

积分
965
发表于 2018-3-26 13:04:33 | 显示全部楼层
删除BOM头即可:
  1. str = string.replace(string.load("/res/main22.htm"), '^\xef\xbb\xbf', "" );
复制代码
回复

使用道具 举报

185

主题

2541

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
13973
发表于 2018-3-26 17:05:21 | 显示全部楼层
如果是你自己创建的文件,不添加BOM就可以了,对于默认就支持UTF-8的环境,BOM是多余的。

如果是外部来源的文件,用 fsys.codepage.load() 去加载就可以了,对方的文件BOM并不一定是UTF8,
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

手机版|未经许可严禁引用或转载本站文章|站长邮箱|aardio.com|aardio官方社区 ( 皖ICP备09012014号 )

GMT+8, 2018-10-20 04:39 , Processed in 0.078125 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表