問題タブ [shift-jis]
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.
.net - SHIFT_JIS と Unicode エンコーディング間の変換に問題はありますか?
Unicode と SHIFT_JIS コードの間にあいまいなマッピングがある (以前は?) と聞いたことがあります。この KB 記事は、これをある程度証明しています。
問題は、SHIFT_JIS でエンコードされたテキストを取得し、それを Unicode に変換して元に戻すと、データが失われるのでしょうか?
詳細: Windows (XP 以降) と .NET (理論的には NLS API に依存) について話しています。
unicode - Shift-JISのIBMメインフレーム上の日本語COBOLコード。PCへの転送後にどのように表されますか?
メインフレーム上にCOBOLのソースコードを持つ日本のクライアントがあります。彼は、メインフレームのコードがShift-JIS2で表されていると主張しています(そして私たちはそれをかなりよく理解していると思います)。そのコードがPCに転送されるとき、使用される最も一般的なエンコーディングは何ですか?そのCOBOLコードを処理するプログラムを彼に送ったところ、窒息しているようです。お客様から直接コードを提供されることはないため、実験は困難です。彼の実験はUTF-8を示しているようです。Shift-JIS2でエンコード可能な日本語の文字は、それに応じてUnicodeに相当するものに変換されると思います。誰かここで何か経験がありますか?
編集:私たちは私たちの謎を解決したと思います。クライアントはPCでCP-932( "ShiftJIS")を使用していますが、彼のCOBOLプログラムでは、識別子に日本語の文字が含まれているため、ツールが窒息しています。
編集:フォローアップ:もう少し驚き。SHIFT-JISは、東アジアの表意文字と同じ画面スペースを使用する、いわゆる「全角」文字としてASCIIテキストと見なすものをエンコードすることがよくあります。従来のASCII文字は半角として機能します。つまり、FULLWIDTH "A"、 "B"、..."Z"とFULLWIDTH"-"があります。明らかに、日本語のCOBOLを処理するには、COBOLパーサーはWestern ASCIIだけでなく、同等のFULLWIDTHも受け入れる必要があります。FULLWIDTH文字と、驚くべきことにFULLWIDTH HYPHENは、COBOL識別子の「文字」を区切るために使用されていました。
編集:IBM Enterprise COBOLでは、IDにDBCS文字を使用できます。うわぁ!
python - utf-8 以外の引数で URL を開く方法
Python を使用して、utf-8 でエンコードされていないデータ (具体的には shift-jis) をクエリ文字列を介して URL に転送する必要があります。どのようにデータを転送すればよいですか? 引用しますか?utf-8 でエンコードしますか?
ありがとう
perl - CRLF、NEL 行ターミネータを使用して行を処理するにはどうすればよいですか?
shift_jis エンコーディングでファイルを処理する必要があります。ただし、行末記号は、慣れていない形式になっています。
一般を使用しています:
ただし、各レコードの最後に CR が残っています。
これらのタイプのファイルを終了する正しい方法は何ですか?
ruby - Ruby1.8.7でSHIFT_JISファイルを開きます
これは、笑えるほど簡単なはずなのに、行き詰まっているようなものの1つです...
SHIFT_JISエンコードで保存されているCSVファイルを開き、Unicodeにデコードし、UTF-8でエンコードする必要があります。これはruby1.9ではかなり簡単に聞こえますが、本番環境のRailsアプリでは特に冒険心がないので、1.8.7を使い続ける必要があります。
どんな助けでもいただければ幸いです。
php - PHP での SHIFT_JIS テキストの使用
SHIFT_JIS でエンコードされた文字を受け入れ、その結果を電子メールで受信者に送信する必要があるフォームを作成しています。$_POST 変数から結果をキャプチャして、次のようなテキスト ブロックに挿入しようとしました。
しかし、それは機能していないようです (これは私を驚かせません)。これは、PHP で非 ASCII 文字を扱う最初の試みであり、人々が何か提案をしてくれることを願っています。おそらく、テキストをエンコードするための単純な関数が不足しています。
また、私が遭遇する可能性のある他の潜在的な落とし穴はありますか?
ありがとう。
java - ファイルの文字エンコードを検出するにはどうすればよいですか?
アプリケーションはユーザーからファイルを受け取ります。これらのファイルがサポートされているエンコードタイプ(UTF-8、Shift-JIS、EUC-JPなど)である場合は、それらのファイルを検証する必要があります。そのファイルが検証されたら、次のファイルも必要になります。そのファイルをシステムに保存し、そのエンコーディングをメタデータとして保存します。
現在、JCharDet(mozillaの文字検出器のJavaポート)を使用していますが、有効なShift-JIS文字として検出できないように見えるShift-JIS文字がいくつかあります。
他に何が使えるか考えてみませんか?
encoding - FreeType(SHIFT JISエンコード)から指定されたグリフを取得しますか?
これまで、フォントのレンダリングにテクスチャ(bitmapfont)を使用していましたが、freetype2を機能させようとしています。私の文字列はすべてSHIFT_JISでエンコードされており、私の唯一の問題は、フリータイプから適切なSHIFT_JISビットシーケンスに正しいグリフを取得することです。でも思ったより難しいようです。たとえば、「亜」の文字コードは「0x889F」です(バイト1は136に設定され、バイト2は159に設定されています)。これは、SHIFT_JISエンコーディングに準拠しています。だから私は関数を呼び出しました:
次に、その文字コードを使用してグリフをロードしてみます。
しかし、ランダムなグリフを受け取ります。同じ結果ですでに異なるフォントを試したので、フォント固有の問題になることはありません(そして、そうです、それらはshift-jis charmapを提供します)。たとえば、「0」(ゼロ)は位置0x0030にあるはずですが、実際には0x002Dにあります。すべての文字が3の定数オフセットを持っているわけではありません。そうでなければ、問題はありません...私の「FT_Load_Char」呼び出しは、間違った方法でcharcodeパラメーターを渡していると思いますが、それがどのように正しいかは推測できません。すでに試しました:
しかし、その後、別のランダムなグリフを受け取ります。では、デフォルトのcharmapが選択されていない場合、どうすればcharcodeをFT_Load_Charに渡すことができますか?
どんなアドバイスも本当に役に立ちます。ありがとうございました。
unicode - 日本語用の省スペース文字エンコード?
私の意見では、一般的な問題は、ビットマップフォントと組み合わせた文字エンコードです。ほとんどの多言語エンコーディングには、さまざまな文字タイプの間に大きなスペースがあり、そこには未使用のコードポイントがたくさんあります。したがって、それらを使用したい場合は、多くのメモリを浪費します(マルチバイトテキストを保存するためだけでなく、ビットマップフォントのスペースのために特別に意味します)。VRAMはほとんどの場合非常に価値があります...したがって、唯一の合理的なことはつまり、UTF-8文字のテクスチャでカスタムマッピングを使用します(スペースが無駄にならないようにするため)。しかし、この取り組みは、独自の文字エンコードを使用する場合と同じように見えます(したがって、テクスチャ内の文字の順序も独自のものです)。私の特別なケースでは、4096の異なる文字のテクスチャスペースがあり、日本語だけでなくラテン語も表示するための文字が必要です(一般的なcjkコードページのみをサポートするutf-8の混乱)。誰かが同じような問題を抱えたことはありますか(そうでない場合は本当に疑問に思います)?すでにアプローチがある場合は?
編集:同じ問題がここhttp://www.tonypottier.info/Unicode_And_Japanese_Kanji/で説明されていますが、これらのビットマップフォントマッピングをutf-8スペース効率で保存する方法を実際に解決することはできません。だから、さらなる助けは大歓迎です!
Edit2:
ご回答どうもありがとうございました。申し訳ありませんが、私の問題は十分に明確に説明されていませんでした。
私が本当に解決したいのは、CJKUnicodeの範囲が20000文字を超えていることです。ただし、日本語のテキストを正しく表示するには、約2000文字のサブセットのみが必要です。これらのキャラクターは、U+4E00からU+9FA5の範囲に広がっています。したがって、これらのUnicodeコードポイント(日本語の場合は2000のみ)を、作成したテクスチャの座標に変換する必要があります(文字を好きなように並べ替えることができます)。
つまり、U + 4E03は日本語の文字ですが、U + 4E04、U + 4E05、U+4E06はそうではありません。そして、U+4E07も日本語のキャラクターです。したがって、最も簡単な解決策は次のとおりです。文字U + 4E03の後に、テクスチャに3つのスペースを残し(または不要な文字U + 4E04、U + 4E05、U + 4E06をそこに書き込み)、次にU+4E07と書き込みます。しかし、これは非常に多くのテクスチャスペースを浪費します(2000文字だけが必要な場合でも20000文字)。だから私は自分のテクスチャだけを入れられるようにしたい:「... U + 4E03、U +4E07...」。しかし、displayText関数の記述方法がわかりません。表示したいグリフのテクスチャ座標がどこにあるかわからないためです。ハッシュマップなどが必要になりますが、これらのデータを保存する方法がわかりません(... {U + 4E03、128}、{U + 4E07、 129} ... hasmapを埋めるため)。
質問へ:1)特定の形式はありません-したがって、displayText関数を自分で作成します。2)ユニコードに反対する理由はありません-私のビットマップフォントのCJK範囲の問題だけです。3)それは一般的にプラットフォームと言語に依存しないと思いますが、私の場合、Mac OS X/iOSでOpenGLでC++を使用しています。
ご助力ありがとうございます!これについてさらにアイデアがあれば、それは本当に私を大いに助けてくれるでしょう!
unicode - C で iconv API を使用する
iconv API を使用して sjis 文字列を utf-8 に変換しようとしています。すでに正常にコンパイルされていますが、出力は期待したものではありません。私のコード:
ランダムな数字しか得られませんでした。何か案は?
編集:私の入力は
出力は次のようになります: 0x88 0x9F
しかし実際には: 0x30 0x00 0x00 0x31 0x00 ...