Project

General

Profile

Actions

Bug #9245

closed

Kernel::system gives wrong output for utf-8 characters on windows under utf-8 console

Added by leifcr (Leif Ringstad) over 7 years ago. Updated about 1 month ago.

Status:
Closed
Priority:
Normal
Assignee:
cruby-windows
Target version:
-
ruby -v:
ruby 2.0.0p353 (2013-11-22) [i386-mingw32]
Backport:
[ruby-core:59070]

Description

Under windows console running in utf-8 mode (chcp 65001), it is expected to print utf-8 encoded characters in a script from system calls correctly.

To reproduce, create a file in utf-8 format running this:

test.rb

encoding: UTF-8

system "echo abcæøå"

output:
Make sure to set utf-8 console on windows

chcp 65001
ruby test.rb
abcæøå

The expected output is:
abcæøå

Running the following on a command prompt gives the correct output:

ruby -e "system 'echo abcæøå'"

abcæøå

The problem comes clear when running other Windows commands through command line parameters e.g:
system("notepad.exe abcæøå.txt")

Notepad will complain not finding the file abcæøå.txt instead of abcæøå.txt

It seems that there is an internal encoding done before running the command.

Updated by jeremyevans0 (Jeremy Evans) about 1 month ago

  • Backport deleted (1.9.3: UNKNOWN, 2.0.0: UNKNOWN)
  • Status changed from Open to Closed

This appears to be fixed as of Ruby 2.1. I was able to recreate the issue in 2.0, but not in 2.1. I also tested the latest RubyInstaller-head, and the problem is still fixed.

Actions

Also available in: Atom PDF