背景

最近在用Sublime作为开发环境学习Ruby,本文就记录一下Ruby和Sublime在编码方面的问题。

Sublime相关

默认的文件存储编码:UTF8

Sublime文件默认存储编码为UTF8,我们几乎不用修改这个选项。

默认的输出控制台编码:UTF8

在按快捷键【Control + B】执行代码的时候,所有输出都会被Python(Sublime是用Python开发的)接收,然后输出到控制台,输出的字符串编码必须是UTF8编码。

修改默认的输出控制台编码

注意:开发Ruby是不用修改这个文件的。

第一步:找到D:\Program Files\Sublime Text 2\Pristine Packages\Ruby.sublime-package这个文件并用压缩软件打开。

第二步:编辑压缩包中的这个文件:Ruby.sublime-build。

第三步:修改文件并将其保存到压缩包中,修改内容如下:

 {
"cmd": ["ruby", "$file"],
"file_regex": "^(...*?):([0-9]*):?([0-9]*)",
"selector": "source.ruby",
"encoding": "utf-8"
}

第四步:重启Sublime。

Ruby相关

默认的代码解析编码为:ASCII

我们可以修改这个配置,在第一行增加如下注释即可:

 # coding: utf-8

注意:Ruby1.9可以使用这个注释,2.0会自动根据存储编码进行解析的;这行注释只影响源代码的词法结构,例如:可以使用中文变量名、字符串字面量的编码为UTF8。

和编码相关的一些方法

 # coding: utf-8

 puts __ENCODING__ # 源文件编码:UTF-8
puts Encoding.default_external # 运行环境编码:GBK
puts Encoding.locale_charmap # 本地环境编码:CP936
puts "段光伟".encoding # 字面量编码:UTF-8

如何在Sublime中输出用Ruby执行命令行工具的返回结果

用ruby执行命令行工具返回的结果是GBK编码,必须转换为UTF8才能输出到Sublime控制台。

 # coding: utf-8

 puts __ENCODING__ # 源文件编码:UTF-8
puts Encoding.default_external # 运行环境编码:GBK
puts Encoding.locale_charmap # 本地环境编码:CP936
puts "段光伟".encoding # 字面量编码:UTF-8 dir = `dir`.encoding # 命令行返回结果编码:GBK
puts `dir`.encode("utf-8") # 必须转码后才能被Sublime输出到控制台

注意:如果不用Sublime开发,直接在命令行运行ruby程序是不需要转换的。

备注

字符集和编码我还没有入门,有这方面资料的朋友记得给我推荐一下。

参考资料

http://www.360doc.com/content/12/0511/09/992979_210237955.shtml

http://www.cnblogs.com/skynet/archive/2011/05/03/2035105.html

Ruby:Sublime中开发Ruby需要注意的Encoding事项的更多相关文章

  1. Sublime中开发Ruby

    Ruby:Sublime中开发Ruby需要注意的Encoding事项 目录 背景Sublime相关默认的文件存储编码:UTF8默认的输出控制台编码:UTF8修改默认的输出控制台编码Ruby相关默认的代 ...

  2. ubuntu 14.04中安装 ruby on rails 环境(填坑版) 呕血推荐

    环境:在win7 上Vmware虚拟机环境中安装的ubuntu 14.04 开发相关: ruby 2.2.0 rails 4.2.0 sublime text 3 本文说明:所有的命令均在$ 之后,若 ...

  3. Ruby与Python开发的环境IDE配置(附软件的百度云链接)

    Ruby开发环境配置 1.Aptana_RadRails(提示功能不好,开发Ruby不推荐) 链接:http://pan.baidu.com/s/1i5q96K1 密码:yt04 2.Aptana S ...

  4. win7安装ruby on rails开发环境

    前言 我们看到很多文章说ruby环境windows它是非常困难的基础上,这将是各种稀奇古怪的问题,因此,建议linux和mac发. 可是我依照教程搭了下,问题也不算太多.总过大概花费了2个半小时左右就 ...

  5. ubuntu 14.04中安装 ruby on rails 环境

    环境:在win7 上Vmware虚拟机环境中安装的ubuntu 14.04 1. bundle install 时,报json错误可以看出是在安装nokogiri时遇到了问题,此时执行 sudo ap ...

  6. Ruby on Rails入门——macOS 下搭建Ruby Rails Web开发环境

    这里只介绍具体的过程及遇到的问题和解决方案,有关概念性的知识请参考另一篇:Ruby Rails入门--windows下搭建Ruby Rails Web开发环境 macOS (我的版本是:10.12.3 ...

  7. 用VirtualBox和vagrant在win7×64上搭建ruby on rails 开发环境

    下载准备 1.vagrant 官方  WINDOWS Universal (32 and 64-bit) http://www.vagrantup.com/downloads.html 2.Virtu ...

  8. 在linux,windows上安装ruby on rails开发环境

    ruby是一个非常优秀的语言,ruby的精髓rails可以让web开发的效率成倍的提高,下面就介绍一下我搭建rails环境的过程.windows下搭建ruby rails web开发环境本篇文章主要是 ...

  9. Ruby Rails学习中:Ruby内置的辅助方法,基础内容回顾补充

    一. Ruby内置的辅助方法 1.打开文件:app/views/layouts/application.html.erb(演示应用的网站布局) 来咱把注意力放在圈起来的那一行: 这行代码使用 Rail ...

随机推荐

  1. plsql实例精讲部分笔记

    转换sql: create or replace view v_sale(year,month1,month2,month3,month4,month5,month6,month7,month8,mo ...

  2. 【转】Python OCR识别图片验证码

    转载自:博客 对于某些网站登录的时候,往往需要输入验证码才能实现登录.如果要爬虫这类网站,往往总会比这个验证码导致无法爬取数据.以下介绍一种比较折中的方法,也是比较可行的方法: 实现思想: 1.通过截 ...

  3. Charles----- 4.2.7 版本 破解方法

    打开Charles,点击help,选择registered........ 输入信息: Registered Name: https://zhile.io License Key: 48891cf20 ...

  4. [VBA]批量替换PPT里的字体颜色

    不知道为什么计组老师的大量课件字体是伤害视力的亮蓝色……看久了眼睛疼,想把颜色替换成保护视力一点的灰色,但是找了N久也没找到在图形界面上直接操作的方法,于是在MSDN上晃了晃,Google了一下,写了 ...

  5. Technology share: VR is coming,are you ready?

    ►Date 2016-10-18 ►Address 上海市浦东新区严家桥1号宏慧音悦湾3号楼5楼 VR SPACE ►Events 品牌如何抢先一步,借玩VR吸引眼球,如何让客户作为VR买单? 如何结 ...

  6. loadrunner生成随机uuid的方法

    在globals.h中定义方法: 方法: 1.将生成GUID方法放在新建的GUID.h文件中: 2.把这个文件放入脚本保存处: 3.在globals.h中增加函数头“#include "GU ...

  7. Codeforces Round #345 (Div. 1) D - Zip-line 带单点修改的LIS 主席树 | 离线树状数组

    D - Zip-line #include<bits/stdc++.h> #define LL long long #define fi first #define se second # ...

  8. openstack架构设计(一)

    下图描述了最常见的Openstack集成服务和各服务之间如何交互的逻辑架构. 一. 计算架构 当设计和构建计算结点时,需要考虑处理器,内存.网络.和存储资源等信息.它也是openstack的核心部分. ...

  9. 基于Redis实现——分布式锁与实现

    实现 使用的是jedis来连接Redis. 实现思想 获取锁的时候,使用setnx加锁,并使用expire命令为锁添加一个超时时间,超过该时间则自动释放锁,锁的value值为一个随机生成的UUID,通 ...

  10. 初探Java字符串

    转载: 初探Java字符串 String印象 String是java中的无处不在的类,使用也很简单.初学java,就已经有字符串是不可变的盖棺定论,解释通常是:它是final的. 不过,String是 ...