| No.347 | 投稿日時: | 2005/11/09(水) 13:31 <↑親記事:No.346> |
| 投稿者: | 森山 将之 |
> 文字列内のエラーとなった文字位置は特定できるのでしょうか?
> 最初の1バイトとは、どこを指していますでしょうか?
『変換エラー発生時に、変換元マルチバイト文字列のポインタは、
無効なマルチバイト文字列の先頭を指したままになるようですが、』
このポインタが指しているバイトの事です。
> 文字境界のズレの危険はあるものの継続処理は、行えるという理解でよいですか?
そうです。
変換元のポインタを1つ進め、変換先のバッファに '?' などを追加し、それぞのバッファサイズの変数の値を調整して再度、iconv(3) を呼び出すようにすればいいでしょう。
iconv(3) でマルチバイトエンコーディングとして有効なバイト列で文字が未定義の場合には、エラーとせずに "・" や "〓" に変換して、文字が未定義で "・" や "〓" に変換した文字数を返すようになっていれば良いのでしょうけれども。