OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

半角カナから全角カナに変換

  • すぐに回答を!
  • 質問No.199657
  • 閲覧数840
  • ありがとう数3
  • 気になる数0
  • 回答数8
  • コメント数0

お礼率 40% (6/15)

Jcode.pmを使用して半角カナから全角カナに変換したいのです。
こちらの過去ログを拝見し、以下のようなロジックを記述したのですが、
”Undefined subroutine &Jcode::h2z_euc called at test_jcode.pl line 7.”というエラーが出てしまいます。


use Jcode;
$line = 'アイウエオ';
$ato = &Jcode::h2z_euc(\$line);
print $ato, "\n";

どなたかご回答よろしくお願いいたします。
通報する
  • 回答数8
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.8
レベル10

ベストアンサー率 40% (85/208)

$line に入っている文字コードの判別に失敗しているのかもしれません。
Jcode->new($line,'euc')->h2z->sjis;
のように指定すると上手くいきませんか?

sjis にする必要が無い場合は
Jcode->new($line,'euc')->h2z;
でいいはずです。
お礼コメント
you_s

お礼率 40% (6/15)

(1)"アイウエオ"
(2)"ア\nイ\nウ\nエオ"
(3)"アイウエオ"

(2)や(3)だと半角から全角へ変換されるのですが,
(1)だとうまくいきません。

先輩に聞いたところ,Oracleで同じような事をしてくれる関数があるようなので、そちらを試してみることにします。
多数の回答ありがとうございました。
投稿日時 - 2002-01-30 15:28:58
-PR-
-PR-

その他の回答 (全7件)

  • 回答No.2
レベル11

ベストアンサー率 21% (114/531)

Jcode.pmは使ったことがありませんでした。 Perlのバージョン等は大丈夫なのですよね? ...続きを読む
Jcode.pmは使ったことがありませんでした。
Perlのバージョン等は大丈夫なのですよね?
補足コメント
you_s

お礼率 40% (6/15)

バージョンは、5.6.630(最新)です。

Jcode.pmに移行するには以下の2点を変更するだけで、ほぼいけるという記述をインターネットで見つけたのですが,できません。

(1)require jcode.pl → use Jcode;
(2)jcode:: → Jcode::

Jcode.pmでは出来ないということであれば、jcode.plを使用使用とは思っているのですが。。。
投稿日時 - 2002-01-17 15:03:05
  • 回答No.1
レベル11

ベストアンサー率 21% (114/531)

jcode.plというライブラリを使用するのですよね? ならば require "jcode.pl"; $line = "アイウエオ"; &jcode'h2z_euc(*$line); print "$line\n"; でイケると思うのですが。。 ...続きを読む
jcode.plというライブラリを使用するのですよね?
ならば

require "jcode.pl";
$line = "アイウエオ";
&jcode'h2z_euc(*$line);
print "$line\n";

でイケると思うのですが。。
補足コメント
you_s

お礼率 40% (6/15)

jcode.plではなく、jcode.plの後継モジュールJcode.pmでは出来ないのですか。

出来ないのであればjcode.plでやります。。。
投稿日時 - 2002-01-17 13:57:44
  • 回答No.3
レベル8

ベストアンサー率 59% (22/37)

$ato = &Jcode::h2z_euc(\$line); の部分を $ato = &Jcode::h2z(\$line); に変更してもダメでしょうか. ...続きを読む
$ato = &Jcode::h2z_euc(\$line);
の部分を
$ato = &Jcode::h2z(\$line);
に変更してもダメでしょうか.
補足コメント
you_s

お礼率 40% (6/15)

$ato = &Jcode::h2z(\$line);
$ato = &{$Jcode::h2z{'euc'}}(\$line)

上記のように、インターネットなどで記載されている使用方法は全てやってみたのですが,うまくいかないのです。
やはりjcode.plでないとだめなのでしょうか。
投稿日時 - 2002-01-22 15:34:24
  • 回答No.4
レベル10

ベストアンサー率 40% (85/208)

Jcode.pm には h2z_euc は無いみたいですが、 use Jcode; $s = Jcode->new($s)->h2z->euc; で出来ませんか。 ...続きを読む
Jcode.pm には h2z_euc は無いみたいですが、

use Jcode;
$s = Jcode->new($s)->h2z->euc;

で出来ませんか。
補足コメント
you_s

お礼率 40% (6/15)

試してみたのですが,変換したい文字列をどこに記述すればよいのかわかりません。
教えてください。
投稿日時 - 2002-01-25 09:30:29
  • 回答No.6
レベル10

ベストアンサー率 40% (85/208)

use Jcode; $line = "アイウエオ"; $s = Jcode->new($line)->h2z->euc; print $s,"\n"; で上手くいきませんか? ...続きを読む
use Jcode;
$line = "アイウエオ";
$s = Jcode->new($line)->h2z->euc;
print $s,"\n";

で上手くいきませんか?
補足コメント
you_s

お礼率 40% (6/15)

全角から半角への変換はうまくいったのですが、
半角から全角への変換がうまくいきません。

原因として、半角カナがeucである事だと考えられるのです。
そこで、euc から sjis へ変更しようとしたのですが,うまくいきません。

何が問題なのでしょうか。
投稿日時 - 2002-01-25 20:47:16
  • 回答No.5
レベル8

ベストアンサー率 30% (19/63)

そういえば、私も &Jcode::h2z がうまく使えなかった記憶があります。 で、結局以下のようにしました。 use Jcode::H2Z; $line = 'アイウエオ'; &Jcode::H2Z::h2z(\$line); print $line, "\n"; Jcode モジュールをインストールしたのなら、Jcode ...続きを読む
そういえば、私も &Jcode::h2z がうまく使えなかった記憶があります。
で、結局以下のようにしました。

use Jcode::H2Z;
$line = 'アイウエオ';
&Jcode::H2Z::h2z(\$line);
print $line, "\n";

Jcode モジュールをインストールしたのなら、Jcode::H2Z はインストール
されているはずなので、これでできるのではないかと。
Jcode.pm を読むと、Jcode::h2z って Jcode::H2Z::h2z を呼び出していた
だけだったので。
補足コメント
you_s

お礼率 40% (6/15)

試してみましたが,出来ませんでした。

$lineに全角カナをいれると全角カナのまま
半角カナをいれると半角カナのまま出力されてしまいます。

Jcode::convertを使用して現在の文字コードを出力させたところ、うまく出ましたので,Jcodeモジュール自体は正しくインストールされているはずなのですが。。。
投稿日時 - 2002-01-25 12:01:15
  • 回答No.7
レベル10

ベストアンサー率 40% (85/208)

> 全角から半角への変換はうまくいったのですが、 これは、Jcode->new($line)->z2h->euc; としたと言うことですか? z2h を使わないと全角から半角へは変換しないはずですが。 > 半角から全角への変換がうまくいきません。 ...続きを読む
> 全角から半角への変換はうまくいったのですが、
これは、Jcode->new($line)->z2h->euc; としたと言うことですか?
z2h を使わないと全角から半角へは変換しないはずですが。

> 半角から全角への変換がうまくいきません。
$line に半角カナが入っているんですよね?
Jcode->new($line)->h2z->euc;
私が試した限りではこれで上手く行くんですけど。

> 原因として、半角カナがeucである事だと考えられるのです。
> そこで、euc から sjis へ変更しようとしたのですが,うまくいきません。
sjis に変換するには、
Jcode->new($line)->sjis; です。
半角->全角変換も同時にする場合は
Jcode->new($line)->h2z->sjis; です。
補足コメント
you_s

お礼率 40% (6/15)

>これは、Jcode->new($line)->z2h->euc; としたと言うことですか?

そうです。すみません。説明不足で…

Jcode->new($line)->sjis;

上記を試してみましたが,sjisへ変換できないのです。

変換さえできればうまくいくと思うのですが…
投稿日時 - 2002-01-28 09:20:07
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ