зеркало из https://github.com/github/ruby.git
* io.c (rb_io_putc): support multibyte characters.
[ruby-core:30697] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29447 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
Родитель
e960fffda1
Коммит
0a8f047a98
|
@ -1,3 +1,8 @@
|
|||
Tue Oct 12 15:14:21 2010 NARUSE, Yui <naruse@ruby-lang.org>
|
||||
|
||||
* io.c (rb_io_putc): support multibyte characters.
|
||||
[ruby-core:30697]
|
||||
|
||||
Tue Oct 12 15:10:31 2010 NARUSE, Yui <naruse@ruby-lang.org>
|
||||
|
||||
* numeric.c (rb_enc_uint_chr): split from int_chr.
|
||||
|
|
4
NEWS
4
NEWS
|
@ -40,6 +40,10 @@ with all sufficient information, see the ChangeLog file.
|
|||
* extended methods:
|
||||
* Time#strftime supports %:z and %::z.
|
||||
|
||||
* IO
|
||||
* extended methods:
|
||||
* IO#putc supports multibyte characters
|
||||
|
||||
* io/console
|
||||
* new methods:
|
||||
* IO#noecho {|io| }
|
||||
|
|
12
io.c
12
io.c
|
@ -6053,9 +6053,15 @@ rb_f_print(int argc, VALUE *argv)
|
|||
static VALUE
|
||||
rb_io_putc(VALUE io, VALUE ch)
|
||||
{
|
||||
char c = NUM2CHR(ch);
|
||||
|
||||
rb_io_write(io, rb_str_new(&c, 1));
|
||||
VALUE str;
|
||||
if (TYPE(ch) == T_STRING) {
|
||||
str = rb_str_substr(ch, 0, 1);
|
||||
}
|
||||
else {
|
||||
char c = NUM2CHR(ch);
|
||||
str = rb_str_new(&c, 1);
|
||||
}
|
||||
rb_io_write(io, str);
|
||||
return ch;
|
||||
}
|
||||
|
||||
|
|
|
@ -1026,6 +1026,16 @@ EOT
|
|||
}
|
||||
end
|
||||
|
||||
def test_open_pipe_r_enc2
|
||||
open("|#{EnvUtil.rubybin} -e 'putc ?\u3042'", "r:UTF-8") {|f|
|
||||
assert_equal(Encoding::UTF_8, f.external_encoding)
|
||||
assert_equal(nil, f.internal_encoding)
|
||||
s = f.read
|
||||
assert_equal(Encoding::UTF_8, s.encoding)
|
||||
assert_equal("\u3042", s)
|
||||
}
|
||||
end
|
||||
|
||||
def test_s_foreach_enc
|
||||
with_tmpdir {
|
||||
generate_file("t", "\xff")
|
||||
|
|
Загрузка…
Ссылка в новой задаче