問題タブ [icu]
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.
c - ICU4Cを静的にリンクすると、uregex関数が失敗します
バージョン4.2.1(Ubuntu 10.04にパッケージ化されているバージョン)でICU4Cユニコードライブラリを使用します。簡単なテストコードを作成しました。正規表現オブジェクトを開くだけです。
動的にリンクされたicuライブラリを使用してコンパイルし、以下のように実行しました。
結果のステータスコードは「0」でした。魅力のように働いた。
今、私は以下のように静的にicuライブラリをリンクすることに決め、実行しました
結果のステータスコードは「1」でした。uregex_open関数がステータスコード「U_ILLEGAL_ARGUMENT_ERROR」で失敗しました。
ICU4Cを静的にリンクするための何かを見逃しましたか?
php - intvectorsとは何ですか、またそれらを読み取る/使用する方法は?
ICUデータファイルでフォーマットされた整数/整数ベクトルを適用するにはどうすればよいですか...
例えば;
これらを人間が読める「開始」日付、たとえばPHPの1792-01-01にフォーマットできますか?
ありがとう
//ローランド
編集:私はPHPに整数を持っています。
linux - 静的ライブラリフラグを取得するicu-config
icuの静的ライブラリフラグを取得する方法。icu-configを使用します。
私が走ったらicu-config --ldflags
ダイナミックライブラリとリンクしています。静的ライブラリに対してリンクしたい。を使用して静的フラグを取得するにはどうすればよいですかicu-config
php - PHP 5.3.6 で ICU バージョンを更新する
MediaWiki のインストールに時間を費やしています。インストール ベースとして、Windows 2003 および iis で仮想マシンを使用しています。PHP をインストールしていくつかの設定を行った後、intl と icu の設定に取り掛かりました。
しばらくすると、intl は php の win インストーラーで提供される標準の拡張機能であることがわかりました。残念ながら、彼らは icu 3.8 を使用しており、MediaWiki は新しいバージョンの使用を推奨しています。
私は MediaWiki にまったく慣れていないので、すべての推奨事項をインストールしようとしています。
Webダウンロードリンクで新しい icu*.dll を見つけましたが、intl.dll ではありませんでした。「古い」icu*38.dll ファイルが配置されたディレクトリに 7 つのファイル icu*48.dll をコピーしても機能しません。dllにはファイル名が必要だと思うので、なぜそうなのか理解しています。
問題は、新しいバージョンの intl.dll を新しいバージョンの icu でどこで入手できるか、または intl.dll を icu 4.6 でコンパイルできるかということです。ところで、私はコンパイルのクラックではありません。
本当にありがとうフランク
unicode - Unicodeラテン文字「WITHSTROKE」の音訳
ルール"NFD; [:Nonspacing Mark:] Remove; NFC"
をICUTransliteratorデモにフィードすると、文字Ø
(\u00d8
== LATIN CAPITAL LETTER O WITH STROKE
)はそのままになります(つまり、STROKEは削除されません)。
非マーキングスペースのリスト(Category )で、 ()または( )に類似したMn
名前の何かが見つかりません。 COMBINING DIAGONAL STROKE
COMBINING SHORT STROKE OVERLAY
\u0335
COMBINING LONG STROKE OVERLAY
\u0336
ただし、COMBINING SHORT SOLIDUS OVERLAY
(\u0337
)とCOMBINING LONG SOLIDUS OVERLAY
(\u0338
)は見つかります。o
それらは似ているように見えますが、とと組み合わせると、ブラウザで同じくらい太い線をレンダリングしますO
。
アクセスしたUnicodeデータは\u00d8
、その文字の分解を提供しません。
同時に、ICUコレーターデモは、プライマリ(レベル= 1 =ベースレター)コレーターを使用して、、、、、のそれぞれを同じコードポイントに照合しø
ますo
。Ø
O
o\u0337
O\u0338
これは、デモで使用されるCollatorのロケールが、Unicode仕様がサイレントである方法でベース文字を識別するように設定されていることを意味しますか?
LATIN [CAPITAL, SMALL] LETTER *
もしそうなら、音訳の文字からストロークを取り除きたい場合、カスタムのルールベースの音訳をする必要がありますか?
c++ - Win32 で icu u32_regex メモリ リーク/キャッシュでブースト
オプションの ICU サポートを有効にしてブースト正規表現クラスを使用すると (詳細についてはブーストのドキュメントを参照)、メモリ リークが発生したり、リセット/クリーンアップできないメモリのキャッシュが発生したりするようです。
ブーストユニットテストフレームワークがメモリリークを報告しないように、キャッシュをクリアする方法を知っている人はいますか?
私の問題の詳細は次のとおりです:-
icu 4.2.1 のブースト 1.42 でこれを試しましたが、たまたま同じ結果でシステムに構築したので、ブースト 1.47 icu 4.8.1 に変更することで解決される問題ではないと思います。最新バージョン。
次のコード (Test.cpp) のコンパイル:-
次の方法でコマンドラインからコンパイルできます:-
マシンのヘッダー/ライブラリへの適切なパス
適切なブースト dll がパスされていない場合は、test.exe を含むディレクトリにコピーします (boost_regex-vc100-mt-gd-1_45.dll および boost_unit_test_framework-vc100-mt-gd-1_45.dll)。
上記の手順の test.exe を実行すると、次のようになります:-
2 番目のブロックの先頭に名前があるため、icu が実際にここで犯人であると推測しています。
最初のテスト (つまり、u32_regex ではなく標準の正規表現を作成するだけ) を実行しただけでは、メモリ リークは検出されませんでした。
複数の u32_regex をテストに追加しても、メモリ リークが増えることはありません。
icu のドキュメントに従って、u_cleanup() 呼び出しを使用して icu キャッシュをクリーンアップしようとしました。ICU の初期化と終了のセクションを参照してください。
しかし、私は icu ライブラリにあまり詳しくありません (実際には、Unicode 対応の正規表現サポートが必要だったので使用しているだけです)。正規表現 dll をブーストします。
繰り返しますが、問題は次のように見えます:-
オプションの icu サポートを使用してコンパイルされた dll で正規表現をブーストします (これは icu への静的リンクを使用していると確信していますが、ここでは間違っている可能性があります)。
u_cleanup() を呼び出すことができるようにテスト プログラムで icuuc.lib にリンクすると、boost regex ライブラリを介してロードされた ICU のインスタンスが保持するメモリに影響を与えないように見えます (そうであればかなり奇妙です)。
正規表現ライブラリに呼び出しが見つかりません。これにより、実際に呼び出しを行う場所である ICU データをクリーンアップするように要求できます。
c++ - エラー LNK2019 が発生し続ける: 未解決の外部シンボル
使用する IDE は Visual Studio 2010 Professional で、使用するライブラリはICU 4C 4.8.1 for Win32 for MSVC10 です。
デバッグとリリースの両方のマニュアルに従ってすべてのソース コードを再構築し、すべてのテストに合格しました。
次に、Boost の場合と同じ方法で行います。
\includeにC/C++ > 追加のインクルード ディレクトリをプロパティに含めましたが、これで問題ないようです。
Linker > Additional Library Directoriesに\libも含めました。
しかし、私は取得し続けerror LNK2019: unresolved external symbol
ます。
ソースコード:
エラー
c++ - ICUライブラリの綴りルール(RuleBasedNumberFormat)はどこにあるの?
ICU を使用して、
"134" のように数字を文字列に綴り
ます
。 lăm" など多くの間違い
があるため、ルールを編集する必要がありますが、どこを変更すればよいかわかりません
string-formatting - Google縦棒グラフで使用するためにICUで数値を通貨にフォーマットする
素敵な縦棒グラフを作成するために Google Charts を使用しています。これは実際には非常に簡単な作業ですが、次の点で行き詰まりました。 " (ブラジルの通貨の場合)、その後、縦棒グラフに関する Google のドキュメント ページで、通貨の書式設定を含め、数値を希望どおりに書式設定する ICU 式を指定できることがわかりました。
これは私が得ることができる最も近いものでしたが、この表現は私に与えます:
だから私の2つの問題は次のとおりです。
1) 3 桁ごとの区切り記号を表示できない 2) 3 桁ごとの区切り記号を "." に置き換えることができない および小数点記号「,」
Webをグーグルで検索し、ICU自体に関する多くのことを見つけ、ICU C++ライブラリからいくつかのメソッドを呼び出してそれを達成する方法を説明しましたが、グーグルチャートを扱う場合は明らかに利用できません.
c++ - ICUバイトオーダーマーク(BOM)
ICUのustdio関数を使用して、UnicodeStringオブジェクトをさまざまなエンコーディングのファイルに書き込みますが、BOMの先頭に追加されていないようです。
私のコード:
LEをBEに変更すると、ファイルエンコーディングがスワップしますが、BOMがないため、16進エディターの出力ファイルは次のようになります。
注:コードページを「UTF-16」に設定すると、BOMが表示されますが、手動でエンディアンを指定すると、BOMが表示されなくなります。
または、BOMを使用してUnicodeStringをファイルに書き込む方法はありますか?