1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
# :markup: ruby
class String
# call-seq:
# encode(dst_encoding = Encoding.default_internal, **enc_opts) -> string
# encode(dst_encoding, src_encoding, **enc_opts) -> string
#
# Returns a copy of +self+ transcoded as determined by +dst_encoding+.
# By default, raises an exception if +self+
# contains an invalid byte or a character not defined in +dst_encoding+;
# that behavior may be modified by encoding options; see below.
#
# With no arguments:
#
# - Uses the same encoding if <tt>Encoding.default_internal</tt> is +nil+
# (the default):
#
# Encoding.default_internal # => nil
# s = "Ruby\x99".force_encoding('Windows-1252')
# s.encoding # => #<Encoding:Windows-1252>
# s.bytes # => [82, 117, 98, 121, 153]
# t = s.encode # => "Ruby\x99"
# t.encoding # => #<Encoding:Windows-1252>
# t.bytes # => [82, 117, 98, 121, 226, 132, 162]
#
# - Otherwise, uses the encoding <tt>Encoding.default_internal</tt>:
#
# Encoding.default_internal = 'UTF-8'
# t = s.encode # => "Ruby™"
# t.encoding # => #<Encoding:UTF-8>
#
# With only argument +dst_encoding+ given, uses that encoding:
#
# s = "Ruby\x99".force_encoding('Windows-1252')
# s.encoding # => #<Encoding:Windows-1252>
# t = s.encode('UTF-8') # => "Ruby™"
# t.encoding # => #<Encoding:UTF-8>
#
# With arguments +dst_encoding+ and +src_encoding+ given,
# interprets +self+ using +src_encoding+, encodes the new string using +dst_encoding+:
#
# s = "Ruby\x99"
# t = s.encode('UTF-8', 'Windows-1252') # => "Ruby™"
# t.encoding # => #<Encoding:UTF-8>
#
# Optional keyword arguments +enc_opts+ specify encoding options;
# see {Encoding Options}[rdoc-ref:encodings.rdoc@Encoding+Options].
def encode(dst_encoding = Encoding.default_internal, **enc_opts)
# Pseudo code
Primitive.str_encode(...)
end
end
|