Perlで、SJISの16進で表記された文字があるのですが、それがうまく表示できません。
Unicodeの16進文字コードだとうまく表記できるのですが…。
以下がスクリプトです。
以下の場合だと。(句点)がSJISだと0x8142で、
その16進文字列を表示したいのですが、実行結果にあるエラーが出てしまいます。
Unicodeだと。は0x3002なのですが、うまく表示できています。
すみませんがよろしくお願いします。
----------------------------------------
# このファイルの文字コードはSJIS
# 改行コードはLF
#
# 。 SJIS 0x8142
# Unicode 0x3002
#
use Jcode;
use encoding "sjis";
$a = 0x8142;
$a = Jcode->new($a, "sjis")->utf8;
printf("句点の表示…%c\n",$a);
printf("句点の表示…%c\n",0x3002);
----------------------------------------
実行結果
"\x{8142}" does not map to shiftjis at test.pl line 14, <DATA> line 846.
句点の表示…\x{8142}
句点の表示…。
No.1
- 回答日時:
質問の要領を得ませんが、一応回答。
$a = 0x8142;
# 数値0x8142をShiftJisのマルチバイト文字「。」(0x81, 0x42)にする
$a = pack("C2", $a>>8, $a&0xff);
# マルチバイト文字「。」(0x81, 0x42)をワイドキャラクター「。」(\x{3002})にする
use Encode;
$a = Encode::decode("shiftjis", $a);
こんなかんじかな?どういった出力を得たいのかが不明瞭なので、勝手に解釈して返答させていただきます。
No.2ベストアンサー
- 回答日時:
use encoding "Shift_JIS";
use Encode;
$a = chr(0x81).chr(0x42);
$a = decode("Shift_JIS", $a);
printf("句点の表示…%s\n",$a);
printf("句点の表示…%c\n",0x3002);
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PostgreSQLからCSV形式でエクスポートする際にカラム内の改行をとる方法 1 2023/02/22 10:05
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- CGI 古ーくからフリーのtree.cgi掲示板を利用させてもらって来ましたが、最新でなにか復活できないか? 2 2023/04/07 10:43
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- Windows 8 メモ帳による文字コード変換 2 2022/09/01 18:38
- C言語・C++・C# C言語の質問です。 以下の命令を実行するプログラムを作りました ①文字列aとbの長さを表示 ②aとb 1 2022/04/29 15:35
- Excel(エクセル) エクセルの数式について教えてください。 2 2023/02/18 11:30
- Excel(エクセル) エクセルの数式で教えてください。 2 2023/03/09 16:55
- Excel(エクセル) エクセルの数式について教えてください。 2 2023/03/04 09:54
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
4の倍数を論理演算で表す。。
-
10個出力で改行したいのですが...
-
小数点切捨て表示
-
コーディング
-
scanfに文字が入力されたときに...
-
コマンドラインに出力した文字...
-
【C言語教えてください】sin波...
-
printf で二進表示を行いたい。
-
strcmp
-
C言語のじゃんけんゲームのプロ...
-
2の累乗を計算するプログラム...
-
srand(time(NULL))の使い方
-
c言語 プログラム ピラミッド
-
Cプログラムについて
-
円の面積を求めるプログラミン...
-
cshの文字列操作(0埋め)
-
defineで定数が置き換えられな...
-
unsigned int型について
-
パスカルの三角形についてのCプ...
-
Cでオセロゲームプログラム
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
10個出力で改行したいのですが...
-
既約分数の表示プログラム
-
printf で二進表示を行いたい。
-
8人分のテストの点数を入力し、...
-
printf( " %2d", p * q );
-
strcmp
-
CTRL+Dでループを抜けるには
-
4の倍数を論理演算で表す。。
-
%P と %X の違い
-
【C言語教えてください】sin波...
-
c言語でAからZまでを表示する...
-
cshの文字列操作(0埋め)
-
万年カレンダーのC言語プログラ...
-
コマンドラインに出力した文字...
-
scanfに文字が入力されたときに...
-
コンパイルエラーについて
-
ホームページをC言語で作りたい...
-
改行について 1行に何個かづ...
-
台形の面積を求めるプログラム
-
なぜgccはstdio.hをインクルー...
おすすめ情報