# ↓OKWEBでは半角カナ表示できないけど、半角カナのつもり
@kptk = (
'ヴ', 'ー', 'ッ',
'ガ', 'ギ', 'グ', 'ゲ', 'ゴ',
'ァ', 'ィ', 'ゥ', 'ェ', 'ォ',
'ア', 'イ', 'ウ', 'エ', 'オ',
・・・
);
# ↓こちらは全部全角カナ
@kptv = (
'ヴ', 'ー', 'ッ',
'ガ', 'ギ', 'グ', 'ゲ', 'ゴ',
'ァ', 'ィ', 'ゥ', 'ェ', 'ォ',
'ア', 'イ', 'ウ', 'エ', 'オ',
・・・
);
for(my $n = 0; $n < @kptk; $n++){
$data =~ s/$kptk[$n]/$kptv[$n]/eg;
}

などとして、半角カナを全角に直したいのですが、どうも半角の小さい'ァ'だけがまともに変換されません。
その付近の文字やそれ以降すべての文字が文字化けします。
インターネットエクスプローラ5から呼び出しています。
サーバーはソラリス。
文字コードはEUCです。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

不具合の原因は解りかねますが、単純に半角から全角にしたいだけならばh2z_xxx(xxxは変換したい文字コード:jis、sjis、euc)という関数をコールすれば簡単に変換出来ますよ。


例えば、

&jcode'h2z_sjis(\$v);

の様にすると、変数vに格納されている文字列中の半角カナを全て全角カナに変換することが出来ます。
お試し下さい。

注)jcode.plが使用可能になっている必要があります。

#ちなみにh2zとは「半角to全角」の略称と思われます。
#逆の機能を持つものとして、z2h_xxxもあります。

この回答への補足

配布したいので、できればjcode.plが使えるかどうかの環境を選びたくないのです。
小さい半角のァには、EUCでも困るようなエスケープシークエンスが入っているんでしょうか。

補足日時:2001/11/17 16:48
    • good
    • 0
この回答へのお礼

どうやら、2バイト文字の2バイト目と1バイト目とマッチしてしまう関係で、小さいァだけが変な変換をされていたようです。
なんとか解決しました。
ありがとうございました。

お礼日時:2001/12/03 09:21

私の環境で試したのですが、現象が発生しませんでした。


確認環境はソラリス、IE5SP2。
提示されたロジックで、半角小文字のアは全角小文字のア
に変換されました。
また、それをブラウザで表示させたところ、文字化けは
起こりませんでした。
-> ソースにテキストエディタで見えないようなコード
が混入していませんか?

この回答への補足

返事が遅くなってすみません。
対象となっているのは大きな半角アではなく、"ファイル" とかの小さな半角ァです。

ちなみに、この方法では2バイト文字の2バイト目と次の2バイト文字の1文字目にマッチすることがあって、文字化けすること頻出でした。

@kptk = (前回のとおり);
@kptv = (前回のとおり);

$eucpattern = sprintf('([%c-%c][%c-%c])', 0x8E, 0xFE, 0xA1, 0xFE);
$eucpattern2 = sprintf('([%c-%c][%c-%c][%c-%c][%c-%c])', 0x8E, 0xFE, 0xA1, 0xFE, 0x8E, 0xFE, 0xA1, 0xFE);

for(my $n = 0; $n < @kptk; $n++){

(length($kptk[$n]) == 4) ? ($data =~ s/$eucpattern2/$1 eq $kptk[$n] ? $kptv[$n] : $1/eg) : ($data =~ s/$eucpattern/$1 eq $kptk[$n] ? $kptv[$n] : $1/eg);

}

などとやって、必ずEUC文字とマッチさせるようにして、変換すべきなら変換するようにしてます。
でもなんか動作が変です。
個のアルゴリズムは間違っているのでしょうか。

補足日時:2001/11/22 13:36
    • good
    • 0
この回答へのお礼

どうやら、2バイト文字の2バイト目と1バイト目とマッチしてしまう関係で、小さいァだけが変な変換をされていたようです。
なんとか解決しました。
ありがとうございました。

お礼日時:2001/12/03 09:21

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

Qその文字ごとに変換する事はできないのでしょうか?

例えば~やサイ(動物の)と入力する時に単にやさいと
入力して変換するとどうしても野菜等の漢字にしか変換されません
まあこれは象やサイのように前後になんらかの文字をはさめば0で変換はできるのですが
長文の場合ひらがなかカタカナにしか変換されないものがたまにあります
これらを一文字あるいは二文字等に限定して変換させる事はできないのでしょうか?
つまり通常10文字中5文字単位でしか変換できないが1・2文字で変換する事は
できないか?という事です
できればマウスは使わずにキーボードだけで
分かりにくくてすいません
回答お願いします

Aベストアンサー

たぶん、これのことではないかと思いますが、

文字の変換中に、
「Shift」キーを押しながら「←」「→」キーで
変換範囲を変更できると思います。

「やさい」の場合は変換範囲を上記の方法で「や」だけに変更して、
その後「→」キーで「さい」の部分に移動(ただの移動なので「Shift」キーははなす)
して変換すればできると思います。

お試しください。

Q$wfurikae = 1 if ( &ccom::getShukujitsu( &com::tD( $wwy,$wwm,$wwd )) ne '' );がよく

$wfurikae = 1 if ( &ccom::getShukujitsu( &com::tD( $wwy,$wwm,$wwd )) ne '' );

というスクリプトがあったのですが、

$wfurikae = 1 の後に;もいれずifがきています。

違和感があります。

どのような意味になるのでしょうか。

宜しくお願い致します。

Aベストアンサー

そのまんまだと思いますよ。
if 以下の条件が真の時 $wfurikae = 1となります。
Perlはいろいろな書き方ができますので、こういう書き方もありです。
英語の文法の並びにする書き方です。

QVistaで、誤変換や変換できないものがある

ここ最近、Windows Vista標準ので、
誤変換や文やフクスウの変換ができなくなってます。
普通の変換すらできない言葉もでてきてます。
今も2行目の「ふくすう」が変換できません。

発覚した変換できないもの(カナ変換しかできないもの)
こめんとらん=コメントラン
いか=イカ
いがい=イガイ
ふくすう=フクスウ
かいとう=カイトウ
しつもん=シツモン
おおい=オオイ
あやまる=アヤマル
ごへんかん=ゴヘンカン
おねがい=オネガイ
etc・・・・

あまりにもおおすぎて手におえません。
たまに「MicroSoft IME 誤変換」がどうとか警告がでてきます。
どうしたらなおるでしょうか?
アドバイスおねがいします。

Aベストアンサー

IME2007をお使いなら下記のURLを参照して修正プログラムをインストールされたらと思います。

IME 2007 変換精度、学習機能を改善した修正プログラムのご案内
http://www.microsoft.com/japan/office/2007/ime/fixmodule.mspx

Q@color1 = ('0000ae',・・・,'$user_color')で・・

とまとです。

行き詰まりました(TェT)

標題の代入で、'$user_color'の部分を文字列ではなく、後から出て来るinputで入力した文字を代入させるにはどうしたらいいのでしょう?
※標題のままだと「$user_color」という"文字列"が代入されてしまいます。

Aベストアンサー

変数の内容を展開したければ、
' でくくらなければいいわけですが、
後から出てくるなら、その代入時点では
undefine 状態ですか?

QVSODivxToDVD でDVDに変換できないAVIファイル

AVIファイルをDVDに変換するには、VSODivxToDVD を利用しています。ほとんどのAVIファイルは変換できますが、まれに変換できないものがあります。そのファイルは他のソフト、Avi2Dvd、AVI2ISO、DVD Flickで試してみてもできません。AVI2JPGで再出力しようとしてもできません。パソコンでは何の問題もなく再生できるので、何とかDVDに変換することができないものでしょうか?
それが可能なソフトや方法がありましたら教えて下さい。

Aベストアンサー

#2です。

・・・???
真空波動研の結果(ファイル名以降)はそれだけでしたか?

コンテナファイルの形式(まあAVIでしょうが)や音声コーデックがないですし、DivXのFourCCや、フレームレート、ビットレートが抜けてます。
48KHzというのは、音声のサンプリングレートだと思いますが、ビットレートが0(音声がない?)です。VBRというのは音声が可変ビットレートを採用しているということですが・・・

もし、真空波動研での確認内容がそれだけなら、変換に失敗したか、ファイルが壊れていて再生、変換できない、ということになると思いますよ。
再生は出来ましたか?

QPrel正規表現で'$1$'.$saltのあたりが理解できない。

小生Perlを勉強中です。
Perl Codeに以下のようなパスワード暗号処理のサブルーチンが
ありましたが、読めません。教えて下さい。

sub encrypt{
local($inpw)=$_[0];
local(@SALT,$salt,$encrypt);

@SALT=('a'..'z','A'..'Z','0'..'9','.','\');
srand;
$salt=$SALT[int(rand(@SALT)).$SALT[int(rand(@SALT))];
$encrypt=crypt($inpw,$salt)||crypt($inpw,'$1$'.$salt);
return $encrypt;
}

とあります。
特に、下から3行目の($inpw,'$1$'.$salt)が
理解できません。
解説していただければ幸いです。

Aベストアンサー

過去に同様の質問がありました。ctpsysさんの疑問にすべて答えられるかどうかわかりませんが、すくなくとも
>下から3行目の($inpw,'$1$'.$salt)が理解できません
というご質問に対しては参考になるかと思います。

参考URL:http://oshiete1.goo.ne.jp/kotaeru.php3?q=74593,http://oshiete1.goo.ne.jp/kotaeru.php3?q=74593,

Qにち ←なぜ漢字に変換できないのでしょうか?

【ひ】は【日】に変換できるのに、
【にち】はなぜ【日】に変換できないのでしょうか???

Aベストアンサー

もしかして「に」と「ち」で分かれて変換されてしまうということではないでしょうか?
その場合「Shift+右矢印キー」で「にち」全体にフォーカス(?)をかけて再度変換すれば「にち」で変換できると思います。

上記でない場合は、あまりに基礎的なことを言ってしまいすみません。
私もだいぶ前(PC初心者の頃)ですが、「しゅつ」が「主津(しゅ+つ)」になってしまい、「出」が出ないと大騒ぎした経験があるものですから…

Q$in{'~'}を$~に変換

CGIを改造中です。
変数の処理なのですが、サブルーチン内で利用するときに「$in{'~'}」と言う形でしか表示してくれません。これを「$~」の形にしたいです。
数が少なければ「$~ = $in{'~'}」を個数書けばいいのでしょうけど、結構数があるので、何か簡単な方法で変換できないかと考えています。
良い方法があれば教えてください。

Aベストアンサー

ハッシュのままで何か不都合があるのかなと
疑問に思いつつ・・・
#実際ハッシュは
#「(変数の)値に別の値を対応させる」
#ために存在するわけだから

けど,まあ,やろうと思えばkeys関数でできますよ.

%in=(
'X' => 1,
'Y' => 2,
'Z' => 3,
);

for $key (keys %in){
${$key}=$in{"$key"};
print "key; $key ${$key}\n";
}

print "$X $Y $Z";

strictとwarningsのプラグマを外さないといけないので
副作用の方が大きいでしょうが.

Q漢字変換できないまま・・・

以前よりパソコンで漢字変換できなくなったトラブルを質問していましたが、多くの方に親切な回答を頂く事ができました。しかし結局どの方法を試しても元に戻る事はありませんでした。昨日リカバリーしましたがそれでも無理でした。なのでキーボードを買い換えようと考えています。しかしキーボードの故障かどうかがわからないので買い換える前にそれを確認する方法ってあるのでしょうか?(キーボードを変えても改善されないっていうパターンが嫌なので)
ちなみに症状としては、
・半角/全角キーで言語バーのカナ変換できない。
・スペースキーと変換キーが全く効かないので変換とスペースがあけられない。
・無変換キーでひらがなをカタカナには変換できる。
・ソフトキーボードでは変換できる。

宜しくお願い致します。

Aベストアンサー

kinkakutouさん 今日は!
済みません。
追加と訂正です。
>(キーボードを変えても改善されないっていうパターンが嫌なので)
質問者さんの内容を取り違えて居ました。ご免なさい!
正:
キーボードの故障ではなさそうです。
ポイントは、言語バーの設定です。
1:言語バーの「ツール」→「プロパティ」を選択し、画面の「標準に戻す」ボタンをクリックします。
2:前回回答のページで、基本設定します。
3:設定が終了したら、もう1度「プロパティ」で右上の「設定」アイコンをクリックし、画面の「キー設定」TABのキー一覧を確認します。
>・半角/全角キーで言語バーのカナ変換できない。
キーの半角/全角が、IMEオン/オフ(入力)以下項目は全て「-」。
半角/全角キーで言語バーは、立ち上げ時は「A」→「あ」の切替えになります。
>・スペースキーと変換キーが全く効かないので変換とスペースがあけ
>られない。
キーのスペースキーは、空白・全変換・変換+次・変換+次・文節変換
・全変換を確認します。
キーのシフト+スペースキーは、入力以外は半角空白を確認します。
これでIMEは修復可能です。
恐らくポイントの1で元に戻ると思います。

kinkakutouさん 今日は!
済みません。
追加と訂正です。
>(キーボードを変えても改善されないっていうパターンが嫌なので)
質問者さんの内容を取り違えて居ました。ご免なさい!
正:
キーボードの故障ではなさそうです。
ポイントは、言語バーの設定です。
1:言語バーの「ツール」→「プロパティ」を選択し、画面の「標準に戻す」ボタンをクリックします。
2:前回回答のページで、基本設定します。
3:設定が終了したら、もう1度「プロパティ」で右上の「設定」アイコンをクリックし、画面の...続きを読む

Q「$" = ',';」という構文の意味は?

Perl スクリプト中に「$" = ',';」という構文が出てきたのですが、これはどういう意味ですか?

Aベストアンサー

"(ダブルクオート)内ではリスト値(@foo)も展開されますが、そのリスト値の区切り文字を定義する特殊変数で、デフォルトはスペースだそうです。

参考URL:http://www.tohoho-web.com/wwwperl1.htm#Tokushu


人気Q&Aランキング

おすすめ情報