問題タブ [multibyte-functions]

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 投票する
2 に答える
8296 参照

php - preg_match_all を置き換えるマルチバイト関数?

を置き換えるマルチバイト関数を探していますpreg_match_all()$matchesからの引数のように、一致した文字列の配列を提供するものが必要ですpreg_match()。関数mb_ereg_match()はそれを実行していないようです-一致するものがあったかどうかを示すブール値のみを提供します。

mb_* functions pageを見ると、 の機能を置き換えるものは見当たりませんpreg_match()。何を使う?

編集私はばかです。私は最初にこの質問を投稿し、 の代わりを求めました。preg_matchもちろん、これは ですereg_match。ただし、どちらも最初の結果のみを返します。私が欲しかったのは、preg_match_allすべての一致テキストを返す の代替品でした。とにかく、ハクレが指摘したように、u修飾子は私の場合は forで機能します。preg_match_all

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

php - 文字列に対して php の mb_substr() を使用すると、奇妙な文字が表示される

PHP (5.3.5、Ubuntu) で Web サイトを開発していますが、すべてのコンテンツはスペイン語です。指定されたスペースにテキストが収まらない場合、テキストをカットしたい。これを行いたいphpファイルに次のメタタグがあります。<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />.

テキストは、文字セットがlatin1で照合がlatin1_spanish_ciである MySQL データベースから取得されます。mb_substr() 関数でテキストを切り取ろうとしています。しかし、それは正しく機能していません。たとえば、Short PsicodélicoShort Psicodéliにカットしたい場合、関数は次のようになります。

mb_substr('Short Psicodélico', 0, 15, 'ISO-8859-1');

しかし、結果は次のようなものです:短い Psicod&ea . 分音記号付きの e は&eaに変換されますが、その理由はわかりません。文字エンコーディングと関係があると思いますが、正確な方法はわかりません。この関数を使用しない場合、文字は本来の姿で表示されますが、Short Psicod&eaの代わりに Short Psicodélicoが表示されます。

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

php - mb_convert_encoding、mbstring が有効な場合の未定義関数

Apache2 / MySQL で PHP 5.3.8 を実行しているサーバー (Ubuntu 11.10 x64) があります。現在、特定の文字エンコーディングを行う必要があるプロジェクトに取り組んでいますが、マルチバイト (mb_* 関数) がどれも機能していないことがわかりました。

しかし、phpinfo() を見ると、マルチバイト サポートが有効になっていることがわかります。

apt-get install php5-mbstring、php-mbstring、php-multibyte などを試しましたが、どれも機能していないようです。

誰かが私を正しい方向に向けることができますか? 前もって感謝します!

編集:PHPを再コンパイルして修正しました(これは私の最後の手段であり、最初は避けたかったのです)

./configure --enable-mbstring

奇妙なことに、phpinfo() はすでに有効になっていることを示していました。なぜ以前はうまくいかなかったのかわかりません:/

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

python - Python でマルチバイト文字列を処理する方法

PHP には、マルチバイト文字列を処理するためのマルチバイト文字列関数があります (例: CJK スクリプト)。たとえば、lenPython で関数を使用してマルチバイト文字列の文字数を数えたいのですが、不正確な結果 (つまり、この文字列のバイト数) が返されます。

PHP に mb_strlen のようなパッケージまたは関数はありますか?

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

php - 複数のmb_ereg_replace()呼び出しを組み合わせる

これらの置換を1つの正規表現に組み合わせるにはどうすればよいですか?

式は期待どおりに機能しますが、3つ未満の置換ステートメントにそれらを組み合わせたいと思います。
既存の方向属性があるかどうかわからないので、単に置き換えることはできません。


最初の2つの置換に追加された代替を編集します。

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

c++ - 文字列変換: MBCS <-> 複数の \0 を含む UNICODE

ビットマップ ファイルのデータを含む std::string Buffer を std::wstring に変換しようとしています。

を使用しMultiByteToWideCharていますが、最初の文字に遭遇した後に関数が停止するため、機能しません'\0'。文字列の終わりとして解釈するようです。

長さパラメーターとして -1 を渡さずに、std::string-Buffer 内のデータの実際の長さを渡すと、元の文字列のその位置に明確に表示されなかった文字で Unicode 文字列が台無しになります。 .

独自の変換関数を作成する必要がありますか? または、特別なシンボルが正しく変換されないため、データをカジュアルな文字配列として保持する必要がありますか?

よろしく

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

php - PHP マルチバイト代替 UTF8

文字列操作関数の UTF8 セーフな代替手段を探していました。さまざまなご意見やご提案をいただきました。次の関数が UTF-8 で問題を引き起こす可能性があるかどうか、もしそうなら、代わりに何を使用すればよいかお尋ねしたいと思います。PHP マニュアルの mb_ プレフィックス付き関数のリストは知っていますが、使用しているすべての関数があるわけではありません。

関数は次のとおりです: implode、explode、str_replace、preg_match、preg_replace

ありがとうございました

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

delphi - 2バイトをWideCharに結合する

Bytes2つを組み合わせることは可能WideCharですか?もしそうなら、どのように?
たとえば、バイナリの文字「ē」は00010011=1900000001= 1、または275一緒です。


WideCharDelphiで2バイトから取得するにはどうすればよいですか?

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

windows - MultiByteToWideChar が韓国語の一部の文字を認識しない

この韓国語テキスト (quoted-printable) "2013-03-22 =0E?@HD=0F 05:30" は、MultiByteToWideChar によって Unicode に正しく変換されません。Quoted-printable form here は、このテキストをここに配置するためのものであり、実際の内容には 0xE および 0xF バイトが含まれます。

=0E?@HD=0F はそのまま変換され、結果の Unicode には 0xE および 0xF ASCII 文字が含まれます。ただし、これらの文字の代わりに韓国語の文字がいくつか表示されるはずであることがわかりました。国際文字シーケンスは 127 より大きいコードのバイトで始まるといつも思っていましたが、最近、そうではないことがわかりました。ただし、 MultiByteToWideChar はまだ私が行った方法を考えており、 0xE の処理を​​拒否していますか? @ HD 0xF は、50225 (または 949) コードページの非 ASCII 韓国語文字のカップルです。.NET 関数 (Encoding.GetEncoding(50255).GetString など) を使用して同じコンピューターで同じことを行うと、変換結果が正しく取得され、韓国語の文字が表示されます。ただし、MultiByteToWideChar は機能しません。MultiByteToWideChar (MB_COMPOSITE など) に設定できるさまざまなフラグを試しましたが、まだうまくいきません。

MultiByteToWideChar を正しく動作させるにはどうすればよいですか? 問題があれば、私は WinXP SP3 を使用しています。繰り返しますが、.NET の方法は正常に機能しており、内部的に Encoding.GetString が MultiByteToWideChar を呼び出しているようです。