トップページ > 記事閲覧
全てのDXライブラリのソースコードでUTF-8とBOMサポート
名前:LegendGuard 日時: 2023/05/16 19:28

こにちわ、 DXライブラリを使用して、UTF-8にBOMを付け替える実験を行っています。 プロジェクト内のすべてのソースコードにおいて、テスト用に作成したプロジェクトを含めて、エンコーディングを変更しました。 デフォルトでは、DXライブラリはShift-JIS(およびCRLF)のエンコーディングを使用しています。 したがって、すべてのエンコーディングをUTF-8にBOM(およびLF)に変更してコンパイルが正常に行われることを確認しました。 また、UTF-8(およびLF)のエンコーディングでテキストファイルを読み込み、 プログラムでデータを表示するプロジェクトでもテストし、うまく動作しました。 このトピックは http s://dxlib.xsrv.jp/cgi/patiobbs/patio.cgi?mode=view&no=5351 とも関連しています。 また、それらの前に u8 で始まるすべての文字列を設定しています。 したがって、ソースコードでは、スペイン語、ドイツ語、フランス語など、どの言語の文字でも書くことができます。 GitHubでいくつかのDXライブラリプロジェクトをビルドするためのサンプルワークフロースクリプトを作成しました。 GitHubはUTF-8エンコーディングを使用しており、Shift-JISファイルを検出しないため、 ダウンロードしたDXライブラリディレクトリの名前を変更してプロジェクトに設定する必要がありました。 ただし、DXライブラリはまだShift-JISを使用しており、コードにはUTF-8にBOM(およびLF)に変更する必要があります。 すべてのコンピューターがShift-JISを設定しているわけではありません。 以下にワークフロースクリプトを示します。 name: プロジェクトビルド on: [push] jobs: build-windows: runs-on: windows-latest steps: - name: Checkout code uses: actions/checkout@v3 - name: Set console encoding to Shift-JIS to read japanese characters run: chcp 932 - name: Download DXライブラリ run: | Invoke-WebRequest -Uri http s://dxlib.xsrv.jp/DxLib/DxLib_VC3_24b.zip -OutFile C:\DxLib_VC3_24b.zip Expand-Archive -Path C:\DxLib_VC3_24b.zip -DestinationPath C:\ -Force ren C:\DxLib_VC\�v���W�F�N�g�ɒlj����ׂ��t�@�C��_VC�p C:\DxLib_VC\プロジェクトに追加すべきファイル_VC用 - name: Add MSBuild to PATH uses: microsoft/setup-msbuild@v1.0.2 - name: Getting repository uses: actions/checkout@v3 with: token: ${{ secrets.MY_GITHUB_TOKEN }} ref: main submodules: 'recursive' repository: user/MyDXProject run: git clone --recursive http s://${{ secrets.MY_GITHUB_TOKEN }}@github.com/user/MyDXProject.git - name: Restore NuGet packages run: nuget restore MyDXProject.sln - name: Build solution run: msbuild MyDXProject.sln /p:Configuration=Release /p:Platform=x86 - name: Prepare to be stored run: | copy Release\MyDXProject.exe MyDXProject.exe - name: Store artifacts uses: actions/upload-artifact@v3 with: name: MyDXProject_Release_Build-${{ github.run_number }}-${{ github.run_id }} path: | MyDXProject.exe if-no-files-found: error retention-days: 5 DXライブラリのソースコード(ヘッダー(.hファイル)も含む)のエンコーディングをUTF-8にBOMで変更すると、どうでしょうか? これにより、Shift-JISが設定されていないすべてのコンピューターでDXライブラリがサポートされるようになります。 共有方法はわかりませんが、プロジェクトをコンパイルする際にもUTF-8のサポートがあると、みなさんにとって非常に便利だと思います。 事前に、もし私の日本語が下手なら申し訳ありません。 敬具
メンテ

Page: 1 |

Re: 全てのDXライブラリのソースコードでUTF-8とBOMサポート ( No.1 )
名前:管理人 日時:2023/05/17 00:33

すみません、DXライブラリがサポートしている環境の中には UTF-8 に対応していないものがあるので DXライブラリのソースを UTF-8 にすることはできません m(_ _;m ただ、配布するソースファイルは UTF-8 にするというのは検討してみます ご提案ありがとうございます m(_ _)m
メンテ
Re: 全てのDXライブラリのソースコードでUTF-8とBOMサポート ( No.2 )
名前:LegendGuard 日時:2023/05/17 16:42

管理人様ありがとうございます。 私はDXライブラリの開発チームに私の提案を通知または報告する方法がわかりません。 これが適切な場所かどうかもわかりません。 ところで、DXライブラリのソースコードは一般公開されていますか? もしかしたら私が間違っているかもしれません。
メンテ
Re: 全てのDXライブラリのソースコードでUTF-8とBOMサポート ( No.3 )
名前:管理人 日時:2023/05/18 01:13

> 私はDXライブラリの開発チームに私の提案を通知または報告する方法がわかりません。 DXライブラリの開発は私一人で行っています > ところで、DXライブラリのソースコードは一般公開されていますか? はい、こちらのダウンロードページの <DXライブラリのダウンロード> https://dxlib.xsrv.jp/dxdload.html 一番下の『DXライブラリ(Ver3.24b)のプロジェクトをダウンロードする(zip圧縮形式(約5.64MB))』をクリックすると ソースコードをダウンロードできます
メンテ
Re: 全てのDXライブラリのソースコードでUTF-8とBOMサポート ( No.4 )
名前:LegendGuard 日時:2023/05/18 18:57

返信いただきありがとうございます。m(_ _)m まだ試していないので、ソースコードに対して何ができるか確認してみます。 Shift-JISからUTF-8にエンコーディングを変更し、CRLFからLFに変更してLinuxや他のシステムとの互換性を高めた上で、 すべてのソースコードをコンパイルできるか確認します。 そして、コンパイルされたリソースをテストします。 また、C++のバージョンは何ですか? 私はUTF-8やUnicodeについて話しているスレッドを見ました。 また、投稿で詳細を伝えていなかったことをお詫び申し上げますが、 実験で言及したゲームプロジェクトはWindows用に作成されたVisual Studioのソリューションを使用しています。 そのため、UTF-8エンコードされた文字列を普遍的にサポートするプロジェクトを行っていました。 貢献することは可能でしょうか?それについては十分な情報を持っていません。 他に関与している人がいるかどうかもわかりませんし、見つけたソースコードに言及している人は次のリンクです: http s://dxlib.xsrv.jp/cgi/patiobbs/patio.cgi?mode=view&no=3738 DXライブラリのソースコードはSVNやGitHub、バージョン管理環境には存在しないようです。 迷惑をかけたくないのですし、それは開発者次第であり、自身の方法で行うことができます。 ご存じのように、バージョン管理環境ではソースコードの変更や発生したすべてのことを見ることができます。 また、GitHubに関しては、プロジェクトのためのワークフローを使用してコンパイルし、 コンパイルされたリソースをそこから取得することができます。 それによって、コンパイルが成功したかどうかをチェックできます。
メンテ
Re: 全てのDXライブラリのソースコードでUTF-8とBOMサポート ( No.5 )
名前:管理人 日時:2023/05/18 22:37

> Shift-JISからUTF-8にエンコーディングを変更し、CRLFからLFに変更してLinuxや他のシステムとの互換性を高めた上で、 > すべてのソースコードをコンパイルできるか確認します。 Visual C++ 6.0 や Borland C++ Compiler 5.5 や MinGW 4.5.2 では UTF-8 に対応していないことを確認しています > また、C++のバージョンは何ですか? C++ のバージョンは分かりませんが、使用しているコンパイル環境は以下の通りです Visual C++ 6.0 Visual Studio 2008 Visual Studio 2012 Visual Studio 2013 Visual Studio 2015 Borland C++ Compiler 5.5 C++ Builder 10.4 MinGW 4.5.2 MinGW 4.7.2 MinGW 4.8.1 MinGW 4.9.2 MinGW 5.2.0 MinGW 5.3.0 MinGW 6.3.0 MinGW 7.3.0 MinGW 8.1.0 MinGW 8.2.0 MinGW 10.3.0 MinGW 12.1.0 MinGW 12.2.0 Android Studio 2022.2.1 Patch 1 Xcode 14.3 PS Vita SDK PS4 SDK Nintendo Switch SDK > 貢献することは可能でしょうか?それについては十分な情報を持っていません。 事情があって Shift-JIS を使用していますので、LegendGuardさんに貢献していただけることは無いです > DXライブラリのソースコードはSVNやGitHub、バージョン管理環境には存在しないようです。 > 迷惑をかけたくないのですし、それは開発者次第であり、自身の方法で行うことができます。 SVN を使用してバージョン管理を行っています
メンテ
Re: 全てのDXライブラリのソースコードでUTF-8とBOMサポート ( No.6 )
名前:LegendGuard 日時:2023/05/20 00:13

情報をありがとうございます。わかりました。 > SVNを使用してバージョン管理を行っています。 SVNは公開されており、見ることができますか?ただし、誰も変更できない場合でも。
メンテ
Re: 全てのDXライブラリのソースコードでUTF-8とBOMサポート ( No.7 )
名前:管理人 日時:2023/05/21 00:24

> SVNは公開されており、見ることができますか?ただし、誰も変更できない場合でも。 いえ、非公開です 私以外は見ることはできません
メンテ
Re: 全てのDXライブラリのソースコードでUTF-8とBOMサポート ( No.8 )
名前:LegendGuard 日時:2023/05/21 07:58

了解しました。返信を親切にしていただき、ありがとうございます。m(_ _)m DXライブラリがUTF-8をサポートしていないのは残念ですね... ところで、Linuxの部分を見てみました:http s://github.com/dragoon2014/dxlib-for-linux おそらくそれはMinGWにも関連しているのかもしれません。 LinuxでDXライブラリのゲームをプレイしているのを見たことがありません。 Linuxにはサポートがないのでしょうか?また、現在開発中ですか(まだ安定版ではありませんか)? DXライブラリはWindowsのみをサポートしているDirectXではなく、Linux向けのグラフィックスライブラリが必要だと思います。 OpenGLやVulkanなどはいかがでしょうか? これは別のトピックですので、新しいスレッドを作成して話す必要があるかもしれませんね。 このスレッドをこのまま終了し、このトピックを新しいスレッドに移すことができると思います。 それが私ならやることです。
メンテ
Re: 全てのDXライブラリのソースコードでUTF-8とBOMサポート ( No.9 )
名前:管理人 日時:2023/05/23 00:07

> ところで、Linuxの部分を見てみました:http s://github.com/dragoon2014/dxlib-for-linux > Linuxにはサポートがないのでしょうか?また、現在開発中ですか(まだ安定版ではありませんか)? こちらは dragoon2014さんが開発・管理されているDXライブラリ Linux版となっています ( 私は Linux版の開発には関わっていません ) > DXライブラリはWindowsのみをサポートしているDirectXではなく、Linux向けのグラフィックスライブラリが必要だと思います。 > OpenGLやVulkanなどはいかがでしょうか? Windowsでは DirectX を使いたいので、Windows版は現在のまま DirectX を使用します Android版 と iOS版では OpenGL を使用しています Linux版も OpenGL が使用されています
メンテ
Re: 全てのDXライブラリのソースコードでUTF-8とBOMサポート ( No.10 )
名前:dra 日時:2023/05/23 00:37

横からですが 非公式にDxLibのLinux版を作ってる者です。 > DXライブラリがUTF-8をサポートしていないのは残念ですね... 何を持って「UTF-8のサポート」かは不明ですが UTF-8なゲームのソースからDxLib.hを読んで使う場合は SetUseCharCodeFormat(DX_CHARCODEFORMAT_UTF8); を使えばDxLibのソース自体の文字コードは気にしないでよいはずです。 ヘッダー自体もUTF-8で統一したうえで自分のリポジトリに取り込んで管理したければ 後述のようなコードで変換することもできます。 > ところで、Linuxの部分を見てみました ダウンロードページにあるリンクは以前ここの掲示板に紹介した際に 管理人さんのご厚意で載せてもらったもので開発者間の直接の関係はありません。 オリジナルのDxLibはLinuxに対応していないので 必要な処理を追加した上で描画部分はAndroid/iOSのGLESのコードを流用してます。 文字コードについてはDxLibソースのzipを展開したあとで 以下のようなコードを通してLF、UTF-8に統一して扱ってます。 要LinuxですがWSL上でも動作すると思います。 (BOMは使ってないので入れてないですが、知見はお持ちのようなので少し直せばBOM付きにもできるかと思います。 ところで最近のVisual Studioって未だにBOMなしUTF-8なコードはうまく扱えないんですかね) find DxLibMake -type f | while read f; do cat "$f" | tr -d '\r' > tmp; \ (iconv -f utf-8 -t utf-8 tmp -o "$f" 2>/dev/null) \ || (iconv -f cp932 -t utf-8 tmp -o "$f"); rm -f tmp; done 実際の使用例 github.com/dragoon2014/dxlib-for-linux/blob/24fd73e/Makefile#L232-L234 > MinGWにも関連しているのかもしれません。 ちょうど言及があったのでついでに 実は上のMakefileを少しいじるとMinGWでWindows向けビルドにも使えます (記事を書こう書こうと思って放置してしまっている、 とはいえ本題から大分逸れちゃいそうなのでここでは深くは書かないです)
メンテ
Re: 全てのDXライブラリのソースコードでUTF-8とBOMサポート ( No.11 )
名前:LegendGuard 日時:2023/05/26 16:13

皆さん、返信ありがとうございます。m(_ _)m > UTF-8なゲームのソースからDxLib.hを読んで使う場合は、 SetUseCharCodeFormat(DX_CHARCODEFORMAT_UTF8); を使えば、DxLibのソース自体の文字コードは気にしないでよいはずです。 最初の投稿でそのことを述べました。 > (BOMは使ってないので入れてないですが、知見はお持ちのようなので少し直せばBOM付きにもできるかと思います。 ところで最近のVisual Studioって未だにBOMなしUTF-8なコードはうまく扱えないんですかね) 最初の投稿で言った通り、私も確認しました。 ソースファイルがUTF-8でBOMとLFを持つ場合、コンパイルに問題はないと思います。 互換性と移植性の観点から、一部のシステムがCRLFに対応していないため、CRLFの代わりにLFを使用することをおすすめします。 DXライブラリを使用してテキストファイルを読み取るプログラムで作成されたサンプルプロジェクトを示す必要があります。 (すべてのソースコードはUTF-8でBOMとLFを使用しています) 表示するテキストファイルはUTF-8とLFを使用しています。 (BOMを使用すると、読み取りが異なり、先頭に四角形が表示されることがあります) Visual Studioのソリューションでテストされました。 できるだけ早く、可能な方法でコードをアップロードします(おそらく、次の投稿でここにアップロードします) MinGWに関しては、それに使用したことはありませんが、 DXライブラリ以外のプロジェクトで「MSYS2-MINGW64」ツール(http s://msys2.org)を使用しています。 「Cygwin」(http s://cygwin.com)は、いくつかの不便さがあるため、私にとっておすすめされるものではないかもしれません。 すみません、draさん(誰か、または私に答えてくれる方)、Linuxでコンパイルされて動作するプロジェクトはありますか? 言い訳のように聞こえるかもしれませんが、私はLinuxで動作するゲームやプロジェクトを見たことがありません。 それに関する証拠が見つかりません。
メンテ
Re: 全てのDXライブラリのソースコードでUTF-8とBOMサポート ( No.12 )
名前:dra 日時:2023/05/25 22:26

> Linuxでコンパイルされて動作するプロジェクトはありますか? dxlib-for-linuxプロジェクト自体がライブラリの作成と 実行可能なサンプルバイナリを生成する機能を持っています。 適当なLinux(Ubuntuとか)か、最近のWindowsならWSL上でもビルド・実行できます。 sudo apt install git g++ unzip make wget libtiff-dev libopenal-dev libvorbis-dev libopusfile-dev libtheora-dev libpng-dev libegl-dev libgles-dev git clone github.com/dragoon2014/dxlib-for-linux cd dxlib-for-linux make patch make -j4 samples以下にサンプルバイナリが生成されます。 動作イメージ qiita.com/dragoon2014/items/7ab2b3695933b7430d53#%E3%81%8A%E3%81%BE%E3%81%912dxlib-for-linux-on-windows-subsystem-for-linux dxlib-for-linuxを使用することを前提とした独立したプロジェクトは見たことないです。
メンテ
Re: 全てのDXライブラリのソースコードでUTF-8とBOMサポート ( No.13 )
名前:LegendGuard 日時:2023/05/26 16:50

> dxlib-for-linuxを使用することを前提とした独立したプロジェクトは見たことないです。 ビルド手順と情報をありがとうございます、draさん。m(_ _)m 面白いですね。 ゲームプロジェクトの一つでテストしてみます。 サポートがうまく機能することを期待しています。 > DXライブラリを使用してテキストファイルを読み取るプログラムで作成されたサンプルプロジェクトを示す必要があります。 (すべてのソースコードはUTF-8でBOMとLFを使用しています) 表示するテキストファイルはUTF-8とLFを使用しています。 (BOMを使用すると、読み取りが異なり、先頭に四角形が表示されることがあります) Visual Studioのソリューションでテストされました。 できるだけ早く、可能な方法でコードをアップロードします(おそらく、次の投稿でここにアップロードします) 以下に共有したい例があります。 これはVisual Studio Community 2022を使用して作成されたプロジェクトです。 このプロジェクトでは、ソースコードをUTF-8 BOMでコンパイルしています。 そして、コンパイルされたプログラムはUTF-8でエンコードされたテキストファイルを読み込みます(改行コードもLFとしてエンコードされています) http s://github.com/LegendaryGuard/DXLibReadUTF8FileTest また、GitHub上でリポジトリをコンパイルできるようにワークフローも作成し、正常に動作しています。 http s://github.com/LegendaryGuard/DXLibReadUTF8FileTest/blob/main/.github/workflows/build.yml 以下はGitHub Actionsの一部であり、Artifactsにはワークフローの一部としてコンパイルされたコンテンツがダウンロード可能です。 http s://github.com/LegendaryGuard/DXLibReadUTF8FileTest/actions/runs/5085825087 もし、誰かがGitHub Actionsからダウンロードしたコンパイル済みプログラムを彼らのシステムが不審と検知すると言われた場合、それは誤検知です。 なぜそうなるのかはわかりませんが、もし問題がある場合は、プロジェクトを使って好きなようにコンパイルしてみてください。 それが私が示したかったことです。
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存