[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debian-devel:16493] Re: aptitude --show-deps の文字化け



こんにちは、


> > というコードが「D: ruby1.8」のような部分を作っているようで、引用 1 行
> > 目でマルチバイト (たぶん UTF-8) 文字列の一文字目をきちんと取得できてい
> > ないのが原因かと思います。
> 
> まず、 DepType() は libapt の中で、依存関係を返してくれる関数で、国際化した文字列を返してきます。
> 
> この時点では、 locale が設定されているので、 locale 関連の関数が全部利用できるはずです。

先ほど銀座の路上で話していた話題ですが、もっとましなコード思い付きまし
た。mbrlen が最初のmultibyte の文字列の長さを返してくれる関数です。

[23:42:33]dancer64:tmp> cat a.c
/*BINFMTC:
 */
#include <stdio.h>
#include <string.h>
#include <locale.h>
#include <wchar.h>

int main()
{
  int len;
  const char* m="これ";
  mbstate_t mbstate;
  char *b=strdup(m);

  setlocale(LC_ALL, "");

  len=mbrlen(m, strlen(m), &mbstate);
  b[len]=0;

  printf ("%s", b);
}



上川
-- 
dancer@{debian.org,netfort.gr.jp}   Debian Project