C++ コードに std::string というタイトルがあります。残念ながら、そのタイトルのエンコーディングはわかりません。時々異なる場合がありますが、常に utf8 であるとは限りません。ただし、pp:Var (https://developers.google.com/native-client/peppercpp/classpp_1_1_var) を使用して送信する必要があるため、有効な utf8 にする必要があります。
そこで、utf8proc (http://www.public-software-group.org/utf8proc-documentation) で変換しようとしました。utf8proc_iterate 関数を使用する必要があると思いますが、その関数の出力が int 型である理由がわかりません?! どうすれば文字列として取得できますか?
1 に答える
0
何から変換すればよいかわからない場合、データを変換することはできません。データが有効な UTF-8 であるかどうかを確認するのは簡単ですが、UTF-8 ではないデータに遭遇した場合、エンコーディングが実際にどのようなものであるかを知らずに運が悪くなります。エンコーディングを推測するにはヒエリスティックを使用する必要があり、場合によっては間違った推測をすることになります。
utf8proc_iterate()
は、int32_t
すでに UTF-8 でエンコードされているデータを繰り返し処理し、それを 21 ビットのサイズのエンコードされていない Unicode コードポイントにデコードしているためです (コンピューターには 21 ビット整数型がないため、代わりに 32 ビット整数が使用されます)。utf8proc (またはその他のエンコード) を使用してデータを UTF-8 にエンコードするには、最初にエンコードされていない Unicode コードポイントのデータから始める必要があります。それらを取得するには、元のデータがどのようにエンコードされたかを知る必要があるため、そのプロパティを Unicode にデコードしてから UTF-8 に再エンコードできます。
于 2013-01-19T02:14:14.493 に答える