-PR-
解決済み

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

  • すぐに回答を!
  • 質問No.199657
  • 閲覧数871
  • ありがとう数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

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

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);
に変更してもダメでしょうか.
補足コメント
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;

で出来ませんか。
補足コメント
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";

で上手くいきませんか?
補足コメント
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::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 を使わないと全角から半角へは変換しないはずですが。

> 半角から全角への変換がうまくいきません。
$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で解決しましたか?
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

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

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

特集


専門家があなたの悩みに回答!

-PR-

ピックアップ

-PR-
ページ先頭へ