問題タブ [codepages]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
utf-8 - Windows XP - cmd.exe - utf8 コードページに切り替えた後、バッチ ファイルを実行できない
「mode con cp select=65001」で utf8 コードページに切り替えた後、バッチ処理の継ぎ目がエラー メッセージなしで動作を停止します。
したがって、コードページ 437 または 850 がアクティブな状態で新しく起動したコンソールで "cmd.exe /c test.bat" を実行すると、正常に動作します。「mode con cp select=65001」を実行すると正常に動作します。UTF-8 文字の表示は正常に機能します。「echo Hallo!」のようなものを実行します。正常に動作します。
ただし、「cmd.exe /c test.bat」を実行すると、エラー メッセージが表示されずに動作が停止します。
表示エラーだけではありません。バッチ ファイルが実行されません。
「古い」文字セットに戻すと、再び正常に機能します。UTF8 文字セットに切り替えると、再び機能しなくなります。
もちろん、UTF8 IS を控えることは解決策ですが、バックグラウンドには悪い副作用があります。
php - PHP:シンプルなXMLとさまざまなコードページ、およびデータを正しく取得する
私はこのプロジェクトに取り組んでおり、さまざまなソースからさまざまなXMLファイルを受け取ります。私のPHPスクリプトはそれらを読み取り、解析し、mysqlデータベースに保存する必要があります。
XMLファイルを解析するには、PHPのSimpleXMLElementクラスを使用します。ベルギーからUTF-8エンコーディングで、ドイツからiso-8859-1エンコーディングで、チェコ共和国からcp1250でファイルを受け取ります...
xml-dataをSimpleXMLElementに渡し、このオブジェクトにasXML()を出力すると、元のxmlファイルと同じようにxmlデータが正しく表示されます。PHP変数にフィールドを割り当ててこの変数を画面に出力しようとすると、テキストが破損しているように見えます。もちろん、mysqlデータベースに挿入すると破損します。
例:
XML:
PHPコード:
コードの結果(Linux bashシェルの場合)はカーソルを上に移動してから、次のように出力します。bÃn--Rozb 741,85km; DÄ(カーソルの動きはもちろん、PHPによって出力される誤った文字に関連しています)
PHPはデータをUTF-8に変換して文字列パラメーターに格納すると思うので、mb_convert_encodingを使用してUTF-8からcp1250に変換すると正しい結果が表示されると思いましたが、そうではありません。また、他のすべてのソースと組み合わせることができる形式でデータを保存できるはずです。
エンコーディング/コードページについてはよくわかりません。これがおそらく正しく機能しない理由ですが、異なる言語のテキストをコピーして貼り付けた場合、たとえば新しいUltraEditファイルに貼り付けることができます。 、それらはすべて正しく表示されます。UltraEditはこれをどのように処理しますか?UTF-8を使用していますか(これは何でも表示できると思いますか?)
ソースのどのエンコーディングでも常に表示されるようにデータを変換するにはどうすればよいですか?
.net - 非標準のコードページで EBCDIC データを読み取り、数字を台無しにしない方法は?
これは古い(古い)手のためのものです:-)
メインフレーム DB2 テーブルからバイナリ ダンプを読み込んでいます。テーブルには、varchar、char、smallint、integer、float の列があります。興味深いことに、DB2 はコード ページ 424 (ヘブライ語) を使用します。コードをコードページに依存しないようにする必要があります。
したがって、次のように System.Text.Encoding を使用してストリームリーダーでファイルを開きます。
を使用して、長さに応じて VARCHAR および CHAR データを char 配列に読み取ります。
VARCHAR 列の最初の 2 バイトは常に破棄し、正しい文字列を取得する必要があります。
そして、すべてが素晴らしいです!
しかし、今は SMALLINT 列にたどり着き、困っています。符号付き数値の値は 2 バイトで格納され、ビッグ エンディアンであるため、
そして私は間違った数字を取得します!たとえば、バイトが 00 03 の場合、バッファ (1) で 0 を取得し、バッファ (0) で 3 を取得します。しかし、2 バイトが 00 20 の場合、128 が buffer(0) に読み込まれます!
髪を引っ張って半日後、ストリームリーダー宣言からエンコーダーを削除すると、32 がバッファー (0) に読み込まれます。
要するに、非標準のコードページエンコーダーはバイトの読み取りを台無しにします!!!
これを回避する方法はありますか?
c++ - 別の場所にローカライズされたマシンにリソースをロードするときに、Unicode以外のアプリケーションがリソースの文字セットを変換しないようにするにはどうすればよいですか?
VisualStudioで記述された非UnicodeのC++アプリケーションがあります。これは、元々、コードページ1252の文字セットを使用するマシン用に記述されたものです。
このアプリケーションは、リソースを読み取った後、一部のファイルでリソース文字列を検索するなど、リソースのコンテンツに対して多くの後処理ステップを実行します。
現在、中国の人々はこのアプリケーションを使い始めており、彼らのマシンはPRCロケールを使用しています(これにより、非Unicodeアプリケーションのデフォルトのコードページがマルチバイト文字セットである936に設定されます)。
CString::LoadString
変換を実行するようです。他のファイルで探しているコンテンツが同じではないため、これにより以降の処理が中断されます。
同じことがCMenu::GetMenuString
またはにも当てはまりCWnd::GetWindowText
ます。
iconv
残念ながら、ファイルを単純に使用することはできません。 LoadString
、GetMenuString
または次のGetWindowText
ように動作します。
- コードページ1252で有効な一部の文字は、コードページ936では無効であり(たとえば、î、û、ñ、œ)、疑問符に置き換えられます。
- コードページ1252で有効な一部の文字は、コードページ936では無効です(例: É)が、代替文字に置き換えられます(É=>é)
- 一部の文字は両方のコードページに存在しますが、同じ表現ではなく、CP936では2バイトであることがよくあります
- 一部の文字(すべてのASCII文字を含む)は、両方のコードページで一致します。
リソースコンテンツをロードするこれらの3つの関数は、文字セット変換を実行せずに、バイナリコンテンツをロードするようにしたいと思います。.rc
でファイルを変更しようとしましLANGUAGE LANG_INVARIANT, SUBLANG_NEUTRAL
たが、何も変更されませんでした。
リソースファイルには#pragma code_page(1252)
;も含まれています。これは安全に削除できますか?そのプラグマは何のためですか?
ご回答ありがとうございます。
mysql - MySQL データベースに未定のコード ページでテキストを格納する最良の方法
私は現在、テキストの一部を別のアプリケーションからリモートで取得するアプリケーション ( App1 ) を作成しています (これをApp2と呼びましょう)。世界中にApp2のインスタンスがいくつかあり、それらはすべてローカル システム コード ページに従って文字列を解釈します。App2はユニコードに対応していません。
App1はテキストのコード ページに関するヒントなしでApp2からテキストを取得しますが、後の時点で、テキストを正しく解釈するためにコード ページを選択するための手動プロセスが実行されることが予想されます。
テキストのコード ページを自動的に決定する以前の試みは失敗しました。
それまでの間、手動で決定するまでの間、このデータは MySQL データベースに保存する必要があります。
このデータを保存する最良の方法は何ですか? 具体的には、ここで採用するのに最適なものは何CHARSET
ですかCOLLATION
?
フィールドの文字セットに対して有効でない場合、MySQL はフィールドへの文字の挿入を許容しないと思います。
データベースに挿入する前に、コード ページを検出してデータを Unicode に変換できれば理想的ですが、これを一貫して確実に行う方法がわかりません。
.net - 'ç'を'?º'(0x3f 0xba)としてエンコードするコードページ
今日、お客様から読まなければならないファイルを受け取りましたが、奇妙な文字が含まれています。既知の名前を使用して、いくつかの文字の意味を推測できます。
例えば:
- すべてのコードページ(.Netで知られている)を試してファイルをインポートし、知っている単語が含まれているかどうかを確認しました。しかし、満足できるコードページはありません。
- Notepad ++でファイルを開くと、それはANSIであると見なされ、不要な文字も表示されます。(しかし、それは便利な16進エディタプラグインを持っています)。
- 他のファイル(同じユーザーとzipファイルから)はUTF-8でエンコードされます。
私がファイルを受け取った人から、私は助けを期待することはできません。(Google翻訳を使用して)彼は、ファイルを作成するだけでは非常に難しいと感じ、私がアクセスできないソフトウェア(SAPを信じている)を使用していることを私に明らかにしました。
彼が送ってくれたファイルのエンコーディングを見つける方法は他にありますか?
delphi - DelphiでICUを使用した人はいますか?
DelphiのICU(http://site.icu-project.org/を参照)DLLを使用した人はいますか?
特に、コードページの変換と照合機能に興味があります。
ヘッダーファイルを見ると、ほとんどがクラスを使用するC ++であるように見えるので、まだ多くの調査を行わずに、Delphiに簡単にインポートできる単純な関数をエクスポートする単純なラッパーを作成する必要があると思います。
誰かがそのために何か仕事をしましたか?
または、コードページと照合順序について同様の広範なカバレッジを持つDelphiの別のソリューションを誰かが推奨できますか?
c - gnome-terminalはDOSコードページをサポートしていますか?
私のCプログラムでは、Windowsコマンドプロンプトで機能させるために、Unicodeボックス描画文字をDOSコードページ437のエスケープ文字に交換する必要がありました。Linux用のプログラムをネイティブにコンパイルするときにこれらの文字を正しく表示するようにgnome-terminalのコードページを変更することは可能ですか?
ありがとう。
c# - SilverlightのANSIエンコーディングの実装
Silverlightアプリにいくつかのコードページのエンコーディング実装が必要です。特に、zip-archive(Application.GetResourceStreamを開いている)から英語以外のファイル名を読み取る必要があります。
Silverlightには、Unicodeエンコーディング(Encoding.UTF8、Encoding.Unicode、Encoding.BigEndianUnicode)のみが含まれています。Encoding.GetEncodingは、他のエンコーディング名に対して例外をスローします。
ただし、一部のANSIコードページ(特に866)にはエンコーディングクラスの実装が必要です。デスクトップでは、Encoding.GetEncoding(866)を介して取得します。
最も単純な実装はどこで入手できますか?
ps質問がSilverlightにほとんど関係しないことは理解していますが、言及せずにEncoding.GetEncodingを使用することをお勧めします。
linux - MS Access * .MDBのMySQLまたはSQLiteへの変換、データエンコーディングの問題
ご挨拶、私は私のケースを提示します:
- 私はLinuxUBUNTUにいます
- それぞれ約500MBのJet3.MDB(MS Acess Database)がいくつかあり、データはcp1256/WINDOWS-1256でエンコードされています。
- この記事に従って変換を行うことでsqliteデータベースを作成しましたhttp://cltb.ojuba.org/en/articles/mdb2sqlite。
これが私がデータベースを変換するために作ったbashスクリプトです。私がMSAccessx.MDBを持っていると仮定します
MDB_JET3_CHARSETをWINDOWS-1256、cp1256、WINDOWS-1251、cp1251、UTF-8に変更しようとしました。閲覧するとデータの結果が異なるものもありますが、それでもまったく意味がありません。
前に感謝し、私の悪い英語をお詫びします