Windows 10のInsider PreviewでシステムロケールをUTF-8にするオプションが追加される 19
ストーリー by hylom
互換性問題が大変そうではある 部門より
互換性問題が大変そうではある 部門より
あるAnonymous Coward曰く、
Windows Experience Blogの告知などでは一切言及されていないようだが、Windows 10 Redstone 4のInsider Previewでは、システムロケールの変更を行うダイアログに「ベータ:ワールドワイド言語サポートでUnicode UTF-8を使用」(英語では'Beta: Use Unicode UTF-8 for worldwide language support')というチェックボックスが追加されている。手もとにスナップショットが残っていた最古のRS4ビルド(17004)ですでに存在していたので、正確にいつ追加されたのかは不明。
このチェックボックスをチェックして再起動すると、Build 17035時点では以下のような動作が確認できた。
- 圧縮 (zip形式) フォルダーにファイル名がUTF-8で保存されるようになった。これに伴い、シフトJISに含まれない文字を使ったファイル名も普通に保存できるようになった。
- コマンドプロンプトのコードページが既定で65001(UTF-8)になった。このときのWindows標準コマンドのメッセージは英語になる。
- メモ帳のテキストエンコーディングがUTF-8になった。なお「ANSI」を選んでもUTF-8で保存されるので、シフトJISでの保存はできなくなる模様。
- GetACP()の戻り値も65001になる。WideCharToMultiByteなどでCP_ACPを指定したときも、UTF-8に変換される。
まあどうせ(シンボリックリンクや長いパスサポートみたいに)互換性に問題が出まくって正式版ではマニフェストか何かでオプトインが必要になるのだろうが、現状は控えめに言って最高である。
env LC_ALL=en_US.UTF-8 (スコア:1)
Windows使ってると、一時的にロカール変更する方法がよくわからなくて時々困るので、
もう英語UTF-8にしてくれるならそれでもいいかと思いますが、
SJISの既存ファイルを開けなくなるのであれば困るかなぁ……。
Re: (スコア:0)
なんだよロカールって。
ちょっとクスッとしちゃったじゃないか。
Re:env LC_ALL=en_US.UTF-8 (スコア:1)
そんなに偏狭なこというなや、と思わないでもないので一言。
20年以上前は「ロカール」派もいれば「ロケール」派もいたんですがな。
英米などの英語母語国以外の西洋語にも配慮を欠いていないという建前から
排斥してはいけない「ロカール」呼び。
現状どう収束したかはしりませんけど。
Re: (スコア:0)
そうそう。windows なら culture だよね。
https://stackoverflow.com/questions/2379514/powershell-formatting-valu... [stackoverflow.com]
https://dictionary.cambridge.org/pronunciation/english/locale [cambridge.org]
C_65001.NLS (スコア:1)
が追加されたのビルド16184だったから、結構前から計画はしてたんだろうなあ
さっそく非互換 (スコア:0)
ircクライアントであるところのchocoaが非互換ですね
もう20年も使ってるのか
Re: (スコア:0)
15年半放置されてるのに最新のWindowsで動くってのはなんというか素晴らしいな。
Re: (スコア:0)
ircはチャンネルごとにエンコードの合意があって、chocoaはそれをシフトJISに変換してからwin32 apiに渡してるんだっけか
ということはwin32がシフトJISを食わなくなるのかな
Re: (スコア:0)
Win32 APIは、APIの中で文字コードの判別なんかをしてるわけじゃないからな。
文字列が関わる全てのAPIは Unicode(UTF-16) API と、ロケール依存API の二つが用意されてて、一般的にはコンパイル時にどちらを使うのか決める。
# 実際には ほとんどのAPIが ロケール依存API を呼ぶと UTF-16 に変換されてから Unicode API を呼ぶラッパになってきてるけど)
日本語ロケールは、Shift_JIS なのでロケール依存APIは、システム設定上のShift_JISだと決め討ちで処理する。
システム設定を UTF-8 に変えたのに、Shift_JIS 渡しちゃったら入力を正しく処理できんだろうね。
このへんの仕組みは、Win16 の時代から何もやり方変わってない。
次はファイル名のセパレータを (スコア:0)
/ にしていただきたい!!!
# 更にパスのセパレータを ; から : に!!
Re:次はファイル名のセパレータを (スコア:1)
>更にパスのセパレータを ; から : に!!
やめてくださいしんでしまいます
Re: (スコア:0)
0x5C (U+005C) のままで良いので表示を逆斜線にしてほしい。
円記号は U+00A5 で。
Re: (スコア:0)
フォント変えるだけでいいんじゃね?
#昔自作のbmpフォントでやったなぁ…。
Re: (スコア:0)
本当にこれ。なんとかしてくれ
Re: (スコア:0)
ファイルパスのセパレータを/にして環境変数のセパレータを:にするってことかね?
まあファイル名に;を使えるのに環境変数を;で区切るのは悪手ですな。
個人的には環境変数の区切りは?か|良いように思うが。パット見:よりも目立つので。
Re: (スコア:0)
>まあファイル名に;を使えるのに環境変数を;で区切るのは悪手ですな。
UNIX 系はファイル名に : を使えるけど環境変数のセパレータも : だよ。
というかファイル名に使えない文字が NUL (0x00) と '/' (0x2F) ぐらいしか無い。
じゃあ : を含むパスを環境変数で指定する方法があるかというと…
よく分からないけど無さそう。
Re: (スコア:0)
C:/でもC:\にアクセスできますけど?
Re: (スコア:0)
こっちがどんだけ/を使ったところで何らかのパスを返すWindows APIは容赦なく\で返してくるぞ
ubuntuにすり寄ってくるなら (スコア:0)
次はRTCをUTCにするのかな。現状Liveイメージでデュアルブートすると非常にうざいわけだが。あれはsystemdのせいか