問題タブ [multibyte-characters]
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.
java - Javaバイト配列の一部をStringBuilderに追加します
StringBuilder
Javaでバイト配列の一部をオブジェクトに追加するにはどうすればよいですか?InputStreamからバイト配列に読み取る関数のセグメントがあります。次に、読み取ったものをStringBuilderオブジェクトに追加します。
ruby-on-rails-3 - Railsはéを含むUTF-8文字列を切り捨てます(例)
私は、ORMとしてruby1.9.3とmongoidを使用するrails3.1アプリに取り組んでいます。私は厄介な問題に直面しています。投稿の内容を次のように切り捨てたいと思います。
私が使用raw
しているのは、実際にはリッチテキストエディタで処理されているstrip_tags
ためです。post.content
非ASCII文字に深刻な問題があります。私の投稿内容が次のようになっていると想像してください。
私が上で素朴な方法でやっていることはこれをします:
切り捨ては、のような文字列のすべての単語を表示しているように見えますé&eactute;éé
。
次のいずれかの方法はありますか?
- 切り捨てで実際のUTF-8文字列を処理しますか?ここで、「é」は単一の文字を表しますか?それが私のお気に入りのアプローチです。
- 上記の命令をハックして、結果がより良くなるようにします。たとえば、レールを2ワード間で切り捨てます。
私は今のところ解決策を見つけていないので、この質問をしています。これは私のアプリでそのようなキャラクターに問題がある唯一の場所です。ウェブサイトのコンテンツ全体がフランス語であるため、これは大きな問題であり、多くのが含まれていますé, ç, à, ù
。
また、この動作はヘルパーにとって非常に残念なことだと思います。truncate
私の場合、200文字ではなく、約25文字が切り捨てられるからです。
c++ - マルチバイト文字 '\377777' はどのように機能しますか?
Clang は、標準以外のさまざまな方法std::numeric_limits<size_t>::max()
で自分のallocator::max_size()
式のサイズは 4 バイトに制限されているように見えるため、impl で定義されたマルチバイト char のように見えますが、正確にどのように機能するかはわかりません。
2 ~ 4 行目はすべて int を返すように見えますが、4 行目だけが-Wfour-char-constants
if turn on を警告し-Weveryting
ます。4 バイト char でユーザーに警告する必要があるのはなぜですか?
それがどのように機能するか説明してください。口語的またはおそらく規範的な用語はありますか?
c - マルチバイト文字列をワイド文字列に変換できないのはなぜですか? mbstring が有効に見えても、mbsrtowcs が EILSEQ で失敗する
マルチバイト文字列 (stdin から取得) をワイド文字列に単純に変換することになっている、私が書いたこのスニペットを参照してください。mbsrtowcs
cppreference のドキュメントとドキュメントを読んだ後、mbstate_t
それは有効だと思いました:
はい、これは ASCII 文字列で機能します。しかし、非 ASCII 文字列を処理しようとしているまさにその理由は、ASCII テーブルを超えて分音記号をサポートしたいからです! そして、それは失敗します。への最初の呼び出しは でmbsrtowcs
失敗しますEILSEQ
。これは、マルチバイト文字列が無効であることを示しています。しかし、奇妙なことに、 で検査するとgdb
、有効なようです! gdb
(正しく表示される限り)。このスニペットに非 ASCII 文字列を入力してgdb
ing した場合の効果を以下で確認してください。
これが重要な場合、私は Linux を使用しており、ロケール エンコーディングは UTF8 のようです。
(これが、これが機能すると予想した理由printf("ąsa\n");
です。Linuxでは機能する傾向がありますが、Windowsでは機能しない傾向があります)
私は何が欠けていますか?私は何を間違っていますか?