js读取img文件夹的图片,但是加载不上去,怎么回事?

js读取img文件夹的图片,但是加载不上去,怎么回事?,第1张

出现这种情况的原因就是使用了express的框架用了静态服务。

app.use(express.static(path.join(__dirname, ‘public’)))

就是讲所有的静态资源文件都托管到public文件夹里。然后所有需要调用img图片什么的不管你在哪个文件夹,你都把自己当成是public文件夹即可。

直接在public里面写上路径就是正确的了。

JavaScript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的解释器被称为JavaScript引擎,为浏览器的一部分,森裤早广泛用于客户端的脚本语言,最早是在HTML(标准通用标记语言下的一个应用)网页上使用此雀,用来给HTML网页增加动态功能。

在1995年时,由Netscape公司的Brendan Eich,在网景导航者浏览器上首次设计实现而成。因为Netscape与Sun合作,Netscape管理层希望它外观看起来像Java,因此取名为JavaScript。但实际上纯斗它的语法风格与Self及Scheme较为接近。

为了取得技术优势,微软推出了JScript,CEnvi推出ScriptEase,与JavaScript同样可在浏览器上运行。为了统一规格,因为JavaScript兼容于ECMA标准,因此也称为ECMAScript。

linux环境下,我们可以通过 iconv 这个C++模块来处理Node.JS不支持的字符编码,如GBK,BIG5。

iconv需要依赖native库,这样一来,在一些不支持native模块安装的虚拟主机和windows平台上,我们还是无法安心处理GBK编码。Google之,发现有老外写了一个通过纯Javascript转换编码的模块 iconv-lite ,不过仅支持少许单字节编解码。这个模块的初衷和我一致并且代码组织结构优雅,于是在github上fork了该项目准备支持GBK的编解码。这里是fork的项目。

之前对字符编码的认识我只停留在API转换阶段,对于Unicode、UTF8和GBK之枣弯间的关系和其内部转换原理则非常模糊。比如,使用JAVA代码转换UTF8编码到GBK编码:

String gbkString = new String(utf8String.getBytes("UTF8"), "GBK")

为了编写iconv-lite模块的gbk支持,不得不再一次学习字符编码原理,维基百科是首选的非常系统的学习资料:

Unicode 维基百科

基本多文种平面

GBK 维基百科

通过这些资料,基本弄清楚了以下几点:

Unicode是全世界通用编码

UTF8,UTF16,UTF32

只是Unicode的实现方式之一。UCS2是UTF16的子集,UCS2编码中每个Unicode使用两个字节编码,高字节在高位。Node.JS支持

Buffer.toString('UTF8')和Buffer.toString('UCS2')。

GBK也是Unicode的实现方式之一,总共23940个编码,编码范围可见下图:

UTF8与GBK进行转换,可以把Unicode作为中间编码。

UTF8编解Unicode规则简单,参见 UTF8

GBK编解Unicode无特定规则,一般可通过查表方式

GBK兼容ascii码,ascii字符用一字节编码,最高位为0,其它字符用两位编码,高字节从0x81。编解码时通过此规律对单字节和双字节字符加以区分。由此可见,GBK是单字节、双字节变长编码。

理解了上面几点后,编解散清码GBK文件其实只需要一个GBK-->Unicode的码表就够了。GBK编码时,通过

Unicdoe-->GBK,生成相应的GBK字节流;GBK解码时,通过GBK-->Unicode,生成UCS2字节流,再通过

buffer.toString('UCS2')即可转换成string对象。我制作的一张GBK码表可参见 这里 。

目前,GBK编解码支持已经merge回作者的iconv-lite,并和作者商量修改了接口名字凳掘闷。感兴趣的同学可以这样使用:

npm install iconv-lite

var iconv = require('iconv-lite')

var str = iconv.decode(buf, 'GBK')//return unicode string from GBK encoded bytes

var buf = iconv.encode(str, 'GBK')//return GBK encoded bytes from unicode string


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12168074.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存