ruby Encoding

家住魔仙堡 提交于 2020-02-08 09:40:52

一. 查看ruby支持的编码

Encoding.name_list

 

二. 搜索编码

Encoding.find('US-ASCII') #=> US-ASCII,不存在则抛出异常

 

三. __ENCODING__

__ENCODING__ #=> UTF-8, (__ENCODING__用作创建字符串的编码)

这里提一下:

# -*- coding:gbk -*-
__ENCODING__ #=> GBK

# -*- coding:utf-8 -*-
__ENCODING__ #=> UTF-8

源代码文件中,若包含中文编码,则需要注意两点:

  • 1. 必须在首行添加 # -*- coding: UTF-8 -*-,告诉解释器使用utf-8来解析源码。
  • 2. 必须设置编辑器保存文件的编码为utf-8。

 

四.查看字符串编码

'法海你不懂爱'.encoding #=> UTF-8

 

五. force_encoding


# -*- coding:utf-8 -*-
'法海你不懂爱'.force_encoding('gbk') #=> 娉曟捣浣犱笉鎳傜埍

注意force_encoding方法只是改变了字符串对象的编码信息,并没有改变字符串对象实际存储的内容,这里‘法海你不懂爱’实际是以utf-8的编码存储的,现在修改了他的编码方式为gbk,ruby就会以gbk的方式来解码,所以最后解出来乱码了

 

六. encode、encode!

# -*- coding:utf-8 -*-
'法海你不懂爱'.encode('gbk') #=> '法海你不懂爱'
'法海你不懂爱'.encode!('gbk') #=> '法海你不懂爱'

注意encode改变了编码信息同时也改变了字符串对象存储的内容

总结

  • encdoing用来查看字符串的编码信息
  • force_encoding用来修正字符串编码信息,注意是修正
  • encodeencode!用来转码字符串

 

参考:

Ruby 与字符编码

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!