• ベストアンサー
  • 暇なときにでも

文字コードでハマル

  • 質問No.639703
  • 閲覧数64
  • ありがとう数0
  • 気になる数0
  • 回答数4
  • コメント数0

お礼率 1% (12/798)

仕様という文字がd様って表示されますので、
sjisからeucにコンバート

require 'jcode.pl';

$a = "仕様";
&jconv::convert(*a, "euc");

正しく表示されません。

Perlに詳しくないのですが*aとする理由は何でしょうか?

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

  • 回答No.1
  • ベストアンサー
jcode.plの書式は
&jcode::convert(\$a,"euc");
です。それから、「仕様」が化ける場合には
「仕\様」等、エスケープすれば化けなくなります。

その他の回答 (全3件)

  • 回答No.4

ベストアンサー率 45% (254/557)

仕様と言う文字が化けるのは、おそらくその直前の文字コードが5cで終わっているのではないでしょうか。(参考URL参照)

ex.機能(945c)仕(8e64)様

「仕」の8eが直前の5cでエスケープされる。

機博(948e)d(64)様

それを避けるためには次のいずれかを必要に応じて用います。
1."機能\仕様"のように、5cを重ねてエスケープさせる
2.'機能仕様'のように、シングルクォーテーションで囲む
3.文字コードをeucとして扱う
ただし環境に合った文字コードで出力しなければなりません。例えばWindowsコンソールのようなsjis環境でeuc出力してもあまり意味がありません。また、eucに変換する前に既に文字化けしていると意味が無いので、入力がsijsのときは結局上記1,2のような対策が必要となります。
  • 回答No.3

ベストアンサー率 41% (74/180)

本題から外れてしまいますが、
全角文字はシングルクォーテーションで囲んだほうがよいですよ。

$a = '仕様';
$a = '仕様'.$b.'について';

など。
  • 回答No.2

ベストアンサー率 45% (254/557)

>*aとする理由

古いPerlで変数の参照渡しをする際に用いた裏ワザ的テクニックです。Perl5ではリファレンスを用います。

参考URL(Perlプログラミング講座 第9章 サブルーチン、ライブラリ■参照渡し)の「b.型グロブによる方法」「c.リファレンスによる方法」をご覧下さい。
結果を報告する
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。
関連するQ&A

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

ピックアップ

ページ先頭へ