問題タブ [unicode-string]

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.

0 投票する
7 に答える
7467 参照

c++ - Unicode を適切に処理する STL 文字列クラスはありますか?

std::string と std::wstring についてはすべて知っていますが、UTF-8 と UTF-16 の拡張文字エンコーディングに十分に注意を払っていないようです (少なくとも Windows では)。UTF-32 もサポートされていません。

UTF-8、UTF-16、および UTF-32 を完全にサポートするクロスプラットフォームのドロップイン置換クラスを知っている人はいますか?

0 投票する
5 に答える
8275 参照

java - Java:文字列"\u00C3"などからUnicodeを作成する方法

文字列が\u00C3と入力されたファイルがあります。Javaでそのユニコードによって表されるユニコード文字を作成したいと思います。試しましたが、方法が見つかりませんでした。ヘルプ。

編集:テキストファイルを読むと、文字列には「\ u00C3」がユニコードとしてではなく、ASCII文字として含まれます'\''u''0''0''3'。そのASCII文字列からUnicode文字を作成したいと思います。

0 投票する
2 に答える
1198 参照

c++ - Win32 システムと MacOSX システムの両方で使用できるクロスプラットフォームの Unicode 文字列クラスはありますか?

また、ロケールを意識した大文字と小文字の変換が必要です。.NET はこれを非常にうまく行います。私たち C++ プログラマーは、そのようなことを 100 年も待たなければならないのでしょうか? 私は ICU ライブラリを認識していますが、それは 20MB であり、コードをリンクすることさえできません...全体として、この悪夢を終わらせたい..

0 投票する
4 に答える
738 参照

unicode - UTF-16を固定16ビットエンコーディングとして扱うとどのような問題が発生しますか?

私はUnicodeに関するSOに関するいくつかの質問を読んでいましたが、次のように、完全には理解していないコメントがいくつかありました。

Dean Harding:UTF-8は可変長エンコーディングであり、固定長エンコーディングよりも処理が複雑です。また、Gumboの回答に関する私のコメントも参照してください。基本的に、結合文字はすべてのエンコーディング(UTF-8、UTF-16、およびUTF-32)に存在し、特別な処理が必要です。文字の結合に使用するのと同じ特別な処理を使用して、UTF-16のサロゲートペアも処理できるため、ほとんどの場合、サロゲートを無視して、UTF-16を固定エンコーディングのように扱うことができます。

私は最後の部分(「ほとんどの部分」)で少し混乱しました。UTF-16が固定16ビットエンコーディングとして扱われる場合、これによりどのような問題が発生する可能性がありますか?BMPの外にキャラクターがいる可能性は何ですか?ある場合、2バイト文字を想定した場合、これによりどのような問題が発生する可能性がありますか?

サロゲートに関するウィキペディアの情報を読みましたが、それは私にとって物事を明確にするものではありませんでした!

編集:私が本当に意味しているのは、「偽物のように見えるのに、なぜUTF-16を固定エンコーディングとして扱うことを提案するのでしょうか?」ということだと思います。

Edit2:

「 UTF-8よりもUTF-16を好む理由はありますか? 」で別のコメントを見つけました。これは、これをもう少しよく説明していると思います。

Andrew Russell:パフォーマンスについて:UTF-8はUTF-16よりもデコードがはるかに困難です。UTF-16では、文字は基本多言語面文字(2バイト)または代理ペア(4バイト)のいずれかです。UTF-8文字は、1〜4バイトの範囲で指定できます

これは、UTF-16には3バイトの文字がないため、16ビットを想定することで、1バイトをオフにして「完全に失敗」することはないということを示しています。しかし、これがUTF-8がシングルバイト文字であると仮定することと何ら違うとはまだ確信していません!

0 投票する
2 に答える
1338 参照

python - 一部の文字 (商標記号など) はファイルに書き込めませんが、画面には印刷できます

Web サイトからデータをスクレイピングし、見つけたデータをファイルに書き出そうとしています。90% 以上の場合、Unicode エラーは発生しませんが、データに「Burger King®、Hans Café」などの文字が含まれていると、それをファイルに書き込むのが好きではないため、エラー処理で出力されます。そのまま画面に表示され、それ以上のエラーはありません。

エンコード機能とデコード機能、およびさまざまなエンコーディングを試しましたが、役に立ちませんでした。

私が以下に書いた現在のコードの抜粋を見つけてください。

0 投票する
3 に答える
2879 参照

java - Java / Scala で Unicode (CJK ExtB) 文字を 10 進数 NCR に変換する

CJK ExtB プランの Unicode 文字を含む Java 文字列を Decimal NCR に変換しようとしています。

例 ( http://people.w3.org/rishida/tools/conversion/で試すことができます):

  • 「游鍚堃」はに変換する必要があります游鍚堃
  • 「懷」はに変換する必要があります𧦧懷

これが私が試したものです(Scalaで):

ご覧のとおり、最初のケースでは 3 つの Unicode 文字が 3 つの NCR に正しく変換されます。

しかし、2 番目のケース「懷」では、Unicode 文字は 2 つしかありませんが、Java/Scala は 3 つの文字を含む文字列と見なしているようです。

では、ここで何が起こっているのでしょうか。また、私が言及したサイトのコンバーターと同じように、2 番目のケースを正しく変換するにはどうすればよいでしょうか? どうもありがとう。

アップデート:

  • 私のソース コード ファイルは UTF-8 を使用しています。
  • これが "懷".toCharArray() の結果です
    • char[] = ?, char.toInt = 55390
    • char[] = ?, char.toInt = 56743
    • char[] = 懷, char.toInt = 25079

今、私は何が起こったのか知っていると思います。文字 "" は UTF-16 で 0xD85E 0xDDA7 としてエンコードされ、2 バイトではなく 4 バイトになります。charそのため、データ型が 2 バイトしか表現できないchar の配列に変換すると、2 つの要素が必要になります。

0 投票する
3 に答える
6365 参照

java - Java Unicode 文字列の並べ替え

Javaでは、Unicode文字列はどのように比較されますか?

私が言いたいのは、いくつか言うと、日本語の文字列で、次のことを行うときです。

これらの文字列はどのように比較され、並べ替えられますか?

0 投票する
1 に答える
1902 参照

unicode - FTP経由でANSI文字列をUnicodeファイルに書き込む

ANSI文字列をFTP経由で新しいファイルに書き込む次のVisual Basic 6.0関数があります。ファイルをUTF-16LEで書き込んでほしいです。この次の方法でそれを行う良い方法はありますか?

私は約 10 年間 Visual Basic 6.0 を使用していないので、せいぜい不安定です。任意の入力をいただければ幸いです。

これが apiInternetWriteFile 宣言です。

0 投票する
1 に答える
1088 参照

c++ - ICU UnicodeString では、countChar32() と length() の違いは何ですか?

ドキュメントから;

長さは、UnicodeString にある UChar コード単位の数です。コード ポイント数が必要な場合は、countChar32() を使用してください。

文字列の長さ UChar コード単位で Unicode コード ポイントをカウントします。

コード ポイントは、1 つまたは 2 つの UChar コード単位を占める場合があります。コード ポイントのカウントには、すべてのコード単位の読み取りが含まれます。

このことから、コード ポイントは実際の文字であり、コード単位は文字の可能な部分の 1 つにすぎないと考える傾向があります。

例えば。

次のような Unicode 文字列があるとします。

「フーバー」

長さと countChar32 の両方が 6 になります。次に、長さをエンコードするために完全な 32 ビットを使用する 6 文字で構成される文字列があるとしますが、countChar32 は 6 になります。

これは正しいです?

0 投票する
1 に答える
553 参照

nhibernate - 休止状態でユニコードを無効にする

当社では、デフォルトのマッパーとして nhibernate を使用しています。nhibernate 基準を使用してクエリを作成します。すべてのパラメーターが次のように Unicode として送信されることに気付きました。

これは望ましい動作ではありません。nhibernate クエリでユニコードを無効にすることは可能ですか? ありがとう

ロメク