68user's page 掲示板

Prev< No. 4920〜4927> Next  [最新発言に戻る] [過去ログ一覧]
No. 4920 # 68user 2008/07/09 (水) 01:38:42
>>4918 べた
/usr/local/bin/iconv は GNU の libconv 同梱の iconv コマンド、
/usr/bin/iconv は Solaris 標準の iconv コマンドではないかと
思います。

GNU 版であれば、--version オプションを使うことで
    % iconv --version
    iconv (GNU libc) 2.3.4
    Copyright (C) 2005 Free Software Foundation, Inc.
    (略)
といった表示が得られるかと思います。

以下は Solaris 版と GNU 版の違いであったとして、という前提ですが、

機能差で選ぶなら↓を比較 (昔の Solaris 版 iconv は、不正なバイト列が
あった場合即終了だった気がするのですが、現在はスキップという選択肢も
選べるんですかね? であればそれほど機能差はないかも)
    http://docs.sun.com/app/docs/doc/819-1210/6n3j74jpk?a=view
    http://www.gnu.org/software/libiconv/documentation/libiconv/iconv.1.html

エンコーディングの多さで選ぶなら、/usr/local/bin/iconv -l と
/usr/lib/iconv/iconv_data を比較。特に CP932 や UTF-8 などが絡む
場合は、手持ちの全ファイルを変換して結果を調べるくらいはやった
方がよいかと思います。

後は GNU が好きか、Solaris の世界で固めるのが好きか、でしょうか。

No. 4921 # zsh 2008/07/09 (水) 10:09:43
>>4919 べた
expr や cut でもできますよ。
(cut の場合は @ が付きませんが。)

$ expr $email : '\(.*\)@.*'
$ expr $email : '.*\(@.*\)$'
$ echo $email | cut -d '@' -f 1
$ echo $email | cut -d '@' -f 2

>>4918 べた
Solaris には標準で /usr/local というディレクトリがないので、
68user さんの仰るとおりだと思います。

No. 4923 # べた 2008/07/10 (木) 22:27:06
>>4921 zsh
ありがとうございます。

exprやcutでの使い方ありがとうございます。
勉強になります。

No. 4924 # べた 2008/07/10 (木) 22:28:12
WindowsXP IE6.0 SP2 の別の端末から書き込みを
おこなったら以下のエラー画面が表示されました。

何かインストールされていないものがあるのでしょうか。


エラー : 内部エラーが起こりました。
http://x68000.q-e-d.net/%7E68user/cgi-bin/wwwboard.cgi の実行ができませんで
した。
おそらくCGIプログラムの不具合が原因です。

もし、こちらのファイル設定ミス・リンクミス・CGI の不具合などが原因であった場
合は早急に修正します。

の画面が表示されます。

No. 4925 # べた 2008/07/10 (木) 22:36:19
>>4918 べた
>>4921 zsh

説明ありがとうございます。

それでなのですが、ステータスが返ってくるということで、
「/usr/local/bin/iconv」を使っています。
Bシェルで実行しています。
iconvコマンドをパイプでつないで、連続で実行しています。

/usr/local/bin/iconv -f SJIS -t UTF-8 file_sjis.txt | /usr/local/bin/iconv -f UTF-8 -t UTF-16 > file_utf.txt

1回目のiconv(パイプの左側のiconv)がエラーとなったとき、
ステータスがエラーで返ってきません。
エラーを判断したいのですが、どのようにしたらエラーと判断
できるでしょうか。

/usr/local/bin/iconv -f SJIS -t UTF8 file_sjis.txt | /usr/local/bin/iconv -f UTF-8 -t UTF-16 > file_utf.txt
echo $?

iconv: conversion to UTF8 unsupported
0

”0”が返却。

/usr/local/bin/iconv -f SJIS -t UTF-8 file_sjis.txt | /usr/local/bin/iconv -f UTF-8 -t UTF16 > file_utf.txt
echo $?

iconv: conversion to UTF16 unsupported
1

”1”が返却。

No. 4926 # べた 2008/07/12 (土) 01:29:32
>>4923 べた

ありがとうございます。

$ expr $email : '\(.*\)@.*'
$ expr $email : '.*\(@.*\)$'
$ echo $email | cut -d '@' -f 1
$ echo $email | cut -d '@' -f 2

どれでも、取り出せました。

No. 4927 # 68user 2008/07/20 (日) 03:21:17
>>4925 べた
> 1回目のiconv(パイプの左側のiconv)がエラーとなったとき、
> ステータスがエラーで返ってきません。
> エラーを判断したいのですが、どのようにしたらエラーと判断
> できるでしょうか。
bash なら PIPESTATUS を使えばよいですが、sh であれば
終了ステータスは取得できないと思います。しょぼいですが、
パイプを使うのをやめるのがよいかと思います。

>>4924 べた
> WindowsXP IE6.0 SP2 の別の端末から書き込みを
> おこなったら以下のエラー画面が表示されました。
IP アドレスや発言内容などから SPAM と判定されたのかもしれません。
特に判定精度の高いものではないので、頻発するようならご連絡ください。

Prev< No. 4920〜4927> Next  [最新発言に戻る] [過去ログ一覧]