-
Notifications
You must be signed in to change notification settings - Fork 165
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
リソースファイルのエンコーディングを UTF-8 (BOM無し) に変更 #251
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
github で差分が全く確認できなくなるので
逆に不便になると思います。
どの文字を使いたいか、具体的なものはありますか?
また英語のリソースに関しては、対応の必要がないのではないかと思いますが、どうでしょうか? |
原因追ってる最中ではあるのですが、UTF-8 化されたヘッダを SJIS の .rc に読み込ませるとエラーになってしまうことがあり、それへの対策の意味が大きいです。 |
差分表示のうまい対策があれば良いのですが… https://github.com/kobake/sakura/blob/master/.gitattributes こういう設定を試してみたりしていますが、まだうまくいってないです |
英語リソースこそ対応が必要だと考えております。 現状: sakura_lang_en_US.dllのリソースファイルはShift-JIS(=日本語)で記述されている 標準的な英語のコードページは ISO8859-15(cp1252) です。 sourceforge.net時代にもこの点は突っ込んだことがあります。 エンコーディング混在もよしとする、 というか、GitHubがコードページを正しく認識できない理由って、 |
本 PR では UTF16LE BOM 付きにしてあるのですが、なかなかうまく認識してくれませんね……何か追加設定で認識してくれるようになると良いのですが…… |
そもそも、utf8 対応は github で文字化けして |
ちょっと待って。 前にどっかで書きましたが、rc.exeにはドキュメントの途中で文字コードを変更する命令がありますので。 |
|
反応見る限り、けっこう微妙なところですね。(自分でも微妙だな、とは思っていたのですが、何か良い改善案が出てくることを少し期待していましたが、今のところ無いですね) .rc は ANSI のままにしておいて、仮に SJIS 以外の文字列を扱いたいことがあるときには .rc とは違う形式の外部テキストファイルを UTF-8 で作って、それを読み込ませるとかでも良いかな、とか思いました。 |
一旦 WIP に戻しておきます |
まったく認識しませんね。<UTF-16LE差分 https://github.com/berryzplus/sandbox/commit/8a89ed8382fd8454e0733914902736bf257ff509 こっちのsandboxで実験すればよかった、と後になって気づくなど。 kobakeさん
消す、じゃなくてUTF16LEの CP_xxx を確認してそれを書かないといけないはず。 |
コードポイント値は最初はUTF16のもの(確か1200)設定してみたのですが、その値は不正ですみたいなエラー出たので行そのものを削ってしまいました |
sshでGitHubにログインする、って出来るんですかね?
実験資材をこっちにも入れてみました。 ファイル単体だと中身を表示できるけど、差分表示が無理みたいですね。 |
|
ヘルプには、/c オプション載ってますね。 https://docs.microsoft.com/en-us/windows/desktop/menurc/using-rc-the-rc-command-line- |
何が問題なのかよく分らなくなってきたので表にしてみます。
メリットとデメリットで主体がズレてるので、よく分からない表になりました。
う~む、これはつまり。 |
|
http://0mg.hatenadiary.jp/entry/2013/10/02/170502 によると以下とあります。
|
↑ /c を使うよりも簡単な気がします。 |
これ、Visual Studioで作ったリソースファイルだと、 sakura/sakura_core/sakura_rc.rc Line 32 in 92d6a3b
のようにファイルの途中に挿入されるのですが、これを 932 から 65001 に書き換えても、それより前の行でエラーが出ます。 あと、Visual Studioでちゃんと編集できるかは未確認です。 |
ありがとうございます。なんとか確認が取れました。
UTF-8Nのrcを編集して保存するとShiftJISに戻る、という怪現象が起きます。 もともとリソースエディタを使わない人が主流でやってきたプロジェクトなので、いったんは差分表示ができることを優先してUTF-8Nに移行で良いのかな?と思っています。リソースエディタ使うとファイルが壊れるのは元からなので。 編集すべき箇所をチェックしてみました。 sakura/sakura_core/sakura_rc.rc Lines 15 to 20 in 92d6a3b
ここ(19行目)に sakura/sakura_core/sakura_rc.rc Lines 50 to 55 in 92d6a3b
ここ(52行目)に 上の sakura/sakura_core/sakura_rc.rc Lines 29 to 33 in 92d6a3b
ここのparagmaとかifndef WIN32は不要。 sakura/sakura_core/sakura_rc.rc Line 2831 in 92d6a3b
この 1200 はUTF16LEを意味するので65001に変える。 |
ん?defineしたchar*定数を使うコードがいまの |
リソースファイルのコンパイル後はUTF-16LEで格納されるので、そのままでいい気がします。 |
おっしゃる通り、このパラメータが何に影響してるのか分かってませんでした。 |
a54b143 の状態で rc ファイルを Shift JIS で保存して |
@m-tmatma さん検証ありがとうございます。バイナリ一致してるの確認できると安心できますね。 |
vcxprojの文字コード指定が保険として使える結果になったというw せっかくなので開けるとこまで持って行ってしまいたい気がします。がどうでしょう。 数行書き替えで済みます。 |
6e42d7a で BOM 無しの .rc コミットしました。リソースエディタで開ける状態にはなったはずです。 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
BOM なし、というのもコメントにあったほうがいいと思います。リソースエディタで開けるようにするという理由もあったほうがいいと思います。
BOM 無しコメント入れました |
電池やべっ! 変更1か所目 // CodePage: 65001 (UTF-8)
#pragma code_page(65001)
#include "sakura_rc.h"
#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#define APSTUDIO_HIDDEN_SYMBOLS
#include <Windows.h>
#undef APSTUDIO_HIDDEN_SYMBOLS
#include "Funccode_define.h"
#include "String_define.h"
#include "version.h" 変更2か所目 /////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//
1 TEXTINCLUDE DISCARDABLE
BEGIN
"sakura_rc.h\0"
END
2 TEXTINCLUDE DISCARDABLE
BEGIN
"#define APSTUDIO_HIDDEN_SYMBOLS\r\n"
"#include <Windows.h>\r\n"
"#undef APSTUDIO_HIDDEN_SYMBOLS\r\n"
"#include ""funccode_define.h""\r\n"
"#include ""String_define.h""\r\n"
"#include ""version.h""\r\n"
"\0"
END 以上でリソースエディタでsakura_rc.rcを開けるようになりました。 |
確認しました。 85917a6 + preBuild.bat での
|
説明欄で |
PR タイトルと本文を修正しました |
この PR はもともと UTF16 対応をするということで始まりましたが 途中で方針変更して全く別のやり方で対応することになった場合 新しい PR の説明欄に古い PR のコメントを適宜引用して、経緯を説明する |
たしかに PR 作り直したほうが良かったかもしれませんね。 今回は PR 本文内に経緯のメモも追記しました。 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTMです。
リソースファイルのエンコーディングを UTF-8 (BOM無し) に変更
リソースファイルで SJIS 以外の文字列表現が扱えるように、ファイルエンコーディングを UTF-8 (BOM無し) に変更します。
※ BOM があるとリソースエディタで開けなくなるのであえて付けない。
対応内容
#pragma code_page(65001)
を宣言/c 65001
を追加関連 Issues
ソースコードのUnicode化 #112
NOTE
この PR は当初 UTF-16 で対応する方針で進めていましたが、途中から UTF-8 にする方針に変更されました。そのため、本 PR 前半のコメントは UTF-16 方針時に対するコメントとなっています。