Sha256: 8ce193fc910bcad2820ed7500d698ec321a45a1ee0ac6b8a539a3e8ae3b76f9e

Contents?: true

Size: 1.53 KB

Versions: 3

Compression:

Stored size: 1.53 KB

Contents

---
title: ruby中的编码
layout: post
category: ruby
published: true
---

信息的编码包含两个层面的含义。
一个层面是信息的表达:比如汉字和拼音是两种不同的表达方法。
另一个层面是信息的解读:比如`made`这个字符,拼音可能就是骂人的意思,英文则是`make`的过去分词。
所以编码就是一种协议,以什么协议去编码,就需要以什么协议去解读。

那我们应该选择什么编码协议去编码呢,这个则取决于我们传达信息所采用的工具。
举个例子,我想让一个美国人去给我买个面包,我用中文跟他说,他显然就很难执行我的命令,我得用英语告诉他。

最近的工作中,有一个需求是给客户端传输过去一串html文档,然后客户端解析和渲染这段文档,那我所采用的HTML文档的编码方法就得是客户端能够理解的编码协议。

以下是ruby代码示例:

```ruby
text = "<p>用户卡路里</p>"
# text.encoding => #<Encoding:UTF-8>

base64_text = Base64.encode64(text)  
# => "PHA+55So5oi35Y2h6Lev6YeMPC9wPg==\n"

decode_text = Base64.decode64(base64_text)
# => "<p>\xE7\x94\xA8\xE6\x88\xB7\xE5\x8D\xA1\xE8\xB7\xAF\xE9\x87\x8C</p>"
# decode_text.encoding => #<Encoding:ASCII-8BIT>
# decode_text.force_encoding('utf-8') => "<p>用户卡路里</p>"

base64_strict_text = Base64.strict_encode64(text)
# => "PHA+55So5oi35Y2h6Lev6YeMPC9wPg=="

Base64.strict_decode64(base64_strict_text)
# => "<p>\xE7\x94\xA8\xE6\x88\xB7\xE5\x8D\xA1\xE8\xB7\xAF\xE9\x87\x8C</p>"
```

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
rails_auth-1.0.6 test/dummy/node_modules/yougexiangfa_ui/_posts/ruby/2014-11-16-ruby-code-and-decode.md
rails_auth-1.0.5 test/dummy/node_modules/yougexiangfa_ui/_posts/ruby/2014-11-16-ruby-code-and-decode.md
rails_auth-1.0.4 test/dummy/node_modules/yougexiangfa_ui/_posts/ruby/2014-11-16-ruby-code-and-decode.md