![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
下記のperlのソースで文字化けが出る。wide characterのエラーが出ます。
use LWP::Simple;
print get('https://opac.toshokan.city.fukuoka.lg.jp/licsxp- …
ソースはcp932
urlはutf-8で書かれています。
utf-8フラグの関係だとは思いますが。
対処が分かりません。
エラーが出ない様なperlのソースをご提示願います。
No.3ベストアンサー
- 回答日時:
utf8文字列は、内部用の特殊なエンコーディングだと解釈するのがいいかもしれません。
UTF-8のバイト列としての文字列と、utf8フラグ付き文字列とでは、扱いが違います。
UTF-8のバイト列であっても、decode処理しなければutf8フラグ付き文字列にはなりません。
LWP::Simpleのgetは、外部のコーディングが何であろう(相手がshift_jisでも)と、内部用のutf8文字列で返す。
外部に出力するときは、内部用のをそのまま出力できないので、その出力先に合せてencodeで適切なコーディングに変換する。
ということです。
有難う御座いました。
LWP::Simpleのgetが、その様な動作をしているとは
知りませんでした。
他にも未だ気になる所が有りすが。
またの機会にしたいと思います。
No.2
- 回答日時:
> binmode STDOUT,':utf8' ; # STDOUTにはUTF-8にencodeして出力する
は、UTF-8で表示される端末等を対象にした方法です。
UTF-8 以外のコードで表示される場合(WindowsのCMD等)、適切なコーディグを指定する必要があります。
有難う御座います。
下記で動いていますが、宜しいんでしょうか。
理屈が良く分かっていないのですが。
これは、内部はutf8で動作をしていて。外部もutf8で書かれていて。
そのまま読み込むとutf8で取りこまれる。
内部の操作は共にutf8で正常に動作はするが。
出力でwindowsはsjis対応なので文字化けをする。
だから、utf8をsjisに変換をする。
と言うこの様な理屈で会っているのでしょうか???
今一自信が持てないので再度質問をしました。
宜しく、お願いします。
use utf8;
use LWP::Simple;
binmode STDOUT,':encoding(cp932)' ; # STDOUTにはUTF-8にencodeして出力する
use Encode;
print get('https://opac.toshokan.city.fukuoka.lg.jp/licsxp- …
No.1
- 回答日時:
「wide character perl」とかで検索すればわかるのですが、utf8フラグ付きの文字列をそのまま出力しようとすると発生します。
入力時は
外部のUTF-8,ShiftJIS 等のバイト列 → decode → utf8フラグ付き文字列
出力時は
utf8フラグ付き文字列 → encode → 外部のUTF-8,ShiftJIS 等のバイト列
と 特定の文字コードでのバイト列 と 内部で使うutf8フラグ付き文字列 とを変換して使います。
またはIOレイヤーを使って、入出力時の文字コードを指定します
#ファイルを開くときに指定する
open($fp, ':encoding(cp932)', $filename ) ; # $filenameをCP932として読み込むように設定する
# 既に開かれているファイルをbinmodeで変更する
binmode STDOUT,':utf8' ; # STDOUTにはUTF-8にencodeして出力する
有難う御座います。
下記の様に修正した所エラーは出ませんでしたが、今度は大量の文字化けが発生します。
use LWP::Simple;
binmode STDOUT,':utf8' ; # STDOUTにはUTF-8にencodeして出力する
use Encode;
print get('https://opac.toshokan.city.fukuoka.lg.jp/licsxp- …
文字化けを防ぐためには、どこを修正すれば良いのでしょうか???
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- CGI CGIで出力するhtmlの<!DOCTYPE html>等のタグは要りますか? 2 2023/02/05 21:26
- Perl Perlのエラーについてご教授ください。初心者です。 CGIを別サーバに移したところ、Perlのバー 5 2023/05/31 10:48
- Excel(エクセル) エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの 7 2022/11/04 14:15
- その他(プログラミング・Web制作) Pythonのライブラリ、randomについて 3 2022/09/20 14:30
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- その他(プログラミング・Web制作) awkのtoupper() 1 2022/10/21 20:39
- Windows 10 IT初心者です! powershellで以下のようなエラーが出ました オブジェクト参照がオブジェクト 1 2023/05/17 11:30
- その他(ソフトウェア) powershell で出力したテキストファイルをvim で開くと文字化け 2 2023/01/11 21:39
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Perl言語について。
-
テキストファイルで提出とは?
-
Perlのエラーについてご教授く...
-
INDIRECT 横に再度抽出したい
-
perl LWPでURLにアクセスした時...
-
perlのgrepでmyを付けた場合と...
-
ファイルをディレクトリ分配の...
-
アルファベットに付いて質問し...
-
#!/usr/bin/perlで書きだしたCG...
-
perlのflock関数でロックをかけ...
-
AI sisterとは、偽物の人ですか?
-
bashスクリプト
-
ファイルアイコンの左下に緑の□...
-
perlプログラミング 空白行削除
-
perlでリテラル値はメモリにど...
-
perlで2次元配列をサブルーチ...
-
Perlで時間の計算
-
perlについて
-
perlのrequireの動き方について...
-
perlの構文でカンマの意味が分...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
perl でエラー:Wide character...
-
jcode.plのかわり
-
MFCのコントロールにUTF-8の文...
-
【LaTeX】pBibTeXでのエラーの...
-
Perlで、文字の出現回数を調べ...
-
Cannot decode string with wid...
-
PerlでRSS取得 ~ 文字化け ~ ...
-
PHPの文字化けについて
-
HTML::Templateでutf-8のテンプ...
-
printfの書式指定での2バイト文...
-
sedやperlでの2バイト文字を含...
-
pythonの文字コードとファイル操作
-
デバッグ情報が文字化けする
-
JAVAでMySQLに接続すると日本語...
-
Java+MySQLで特殊文字(丸数字(...
-
オブジェクト? perlをオーバー...
-
WWW::Mechanizeの文字コードに...
-
UTF-16からUTF-8への変換
-
機種依存文字(株)を入力すると\...
-
XMLパラメータの取り込みに関して
おすすめ情報