• 締切済み

URLのUTF-8からShift-JISへのデコード

Tacosanの回答

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.4

どうしても変換したいとしたら, 表を使ってやるしかないです. UTF-8 から一旦 Unicode のコードポイント (u000000~u10ffff) に変換し, その値をキーにして表をひいて対応する Shift_jis の値を見付けることになります.

shuhei1031
質問者

補足

なるほど。それはかなり面倒くさそうですね。 変換表を調べてみます。

関連するQ&A

  • shift-jisをUTF-8に読み込ませるには?

    shift-jisにてcsv形式で保存しているテキストファイルの配列(カンマ区切りの3番目)から取り出したものをUTF-8にエンコードする方法をご教示賜りたくご質問させて頂きました。 $Pscrtfl = "./datas/pdtscrt.txt"; open (DT,"<$Pscrtfl"); @Pscrt = <DT>; close (DT); foreach $i (@Pscrt){ @iW = split(/\,/,$i); $Pscrtfl = "./datas/pdtscrt.txt のtxtに入ってる3番目のデータを取り出して、それをUTF-8文字コードに 変換して出力させたいと思っております。 現在のところ私のやってみたこと foreach(@Pscrt){ use Encode; Encode::from_to( $_, 'utf8', 'shiftjis' ); $Pscrtfl .= $_; } とエンコードかけてみるんですが。。。。やはりcsvファイルの文字がUTF-8に変更していないのか、 <!doctype html> <html><head><meta charset="UTF-8">でprintしようとすると、やはり文字化けしてしまいます。 これを文字化けしない方法がお分かりの方おられましたら、ぜひご教示下さいませ。

    • ベストアンサー
    • Perl
  • デコードに困っています。

    エンコードされた文字をrawurldecodeでデコードしたいのですが、Shift_JISやEUC、UTF-8によってデコードされる形が異なります。 METAでShift_JISを指定してればShift_JISでエンコードされた値もデコードすればしっかりと表示されます。しかしUTF-8など異なるタイプではMETAがShift_JISなのでしっかりと表示されません。どうすればすべてのタイプに対応させることが可能なのでしょうか?

    • 締切済み
    • PHP
  • shift-jisからutf8に変換

    解決に至らなかったので再度お尋ねします。 CGIのコードを見てくださいますか。 http://hotpegasus.bov.jp/mail.txt (必要な部分だけ表示しておりますので、そのままアップしても機能はしません) 改修した箇所は以下のです。 <meta http-equiv="Content-Type" content="text/html;charset=shift_jis"> &jcode'h2z_sjis(*contenido) &jcode'convert(*subject,'sjis'); &jcode'convert(*infor,'sjis'); &jcode'convert(*contenido,'jis'); &jcode'convert(*res_msg,'jis'); print "Content-type: text/html;charset=shift_jis\n\n"; ↓ sjis関連をutf8に書き換え、jcodeの頭文字をJに書き換え <meta http-equiv="Content-Type" content="text/html;charset=utf8"> &Jcode'h2z_utf8(*contenido) &Jcode'convert(*subject,'utf8'); &Jcode'convert(*infor,'utf8'); &Jcode'convert(*contenido,'utf8'); &Jcode'convert(*res_msg,'utf8'); print "Content-type: text/html;charset=shift_utf8\n\n"; require 'jcode.pl'をuse Jcode;に書き換え ※jcode::" となっている箇所はありません 結果 メールフォームはエラーや文字化けは出なくて成功しましたが、メール受信の際、ThunderbirdPortableメーラーでは全て文字化け(文字エンコーディングは「日本語ISO-2022jp」となっています)、ウェブメールのgmailでは内容は文字化けになっていませんが、タイトルが文字化けになっています。 どこが悪かったのでしょうか? 宜しくお願いします。

    • 締切済み
    • CGI
  • VBでShift_JISへurlエンコードできないでしょうか?

    VB6もしくはVBAですが、 文字列をShift_JISへurlエンコードしたいと思います。 utfやeucは方法があったのですが、Shift_JISに関しては 見つかりませんでした。 よろしくお願いします。

  • 【Ruby】shift-jisのページの置換

    content="text/html; charset=shift-jis"のページを読み込んで、文字列の置換がしたいです。 #!/opt/local/bin/ruby require 'uri' require 'open-uri' url='http://hoge.hoge' open(url,'r:shift_jis'){|io| content = io.read content.gsub!(/ほげ/,'ホゲホゲ) print content } 上記の様に書いてみました。ソースコード自体はUTF-8で記述しました。 実行すると、 `gsub!': incompatible encoding regexp match (UTF-8 regexp with Shift_JIS string) (Encoding::CompatibilityError) となってしまいます。 どうしたらよいのでしょうか? rubyのバージョンは ruby 2.0.0p353 (2013-11-22 revision 43784) [x86_64-darwin12] です。 以上、よろしくご指導のほど、お願い申し上げます。

    • ベストアンサー
    • Ruby
  • URLデコードをしてくれるリネームソフトを探しています

    URLデコードをしてくれるリネームソフトを探しています URLエンコードされた名前のファイル名があるのですが、これを日本語のファイルに直したいです ファイル数が結構あり、手で直すのはちょっと無理があるのでURLデコードをしてくれるリネームソフトを探しています 文字コードはUTF-8です よろしくお願いします

  • 文字コードの変換(Shift-JISからUTF8)

    文字コードがShift-JISのCSVファイルを読み込み、UTF-8のテキストファイルに出力するのに プログラムの中で変更しようとしているのですが、うまくいきません。出力ファイルの文字コードを 確認するとShift-JISのままです。 どなたか教えていただけないでしょうか? ActivePerl v5.16.0を使用し、Encodeモジュールのfrom_toを使用しています。 #!/usr/bin/perl use strict; use warnings; use utf8; use Encode; my $input_file="input.csv"; my $output_file="output.txt"; open (IN, $input_file) or die "$!"; open (OUT, ">$output_file") or die "$!"; while (<IN>){ chomp ($_); my @data=split(/,/,$_); for(my $i=0;$i<@data;$i++){ $data[$i]=Encode::from_to($data[$i],'shiftjis','utf8'); #Shift-JISからUTF-8に変換 $data[$i]=~s/\s+//g; print OUT $_; } print OUT "\n"; } close (IN); close (OUT);

    • ベストアンサー
    • Perl
  • Shift-JISからUTF-8への変換が出来ません

    初歩的な質問で申し訳ありませんが、大変困っております。ただいまimagettftext()を使って日本語主力したく悪戦苦闘しております。  ページ自体はShift-JISで制作していますのでimagettftext()で日本語を出力する場合はUTF-8へ変換して出力するところまでは知れべていて分かりました。しかしいざmb_convert_encoding()で変換しようとするとなぜかUTF-8へ変換されません。 $str = mb_convert_encoding($str,"UTF-8","SJIS"); print mb_detect_encoding($str);  結果→SJIS しかしこれがEUC-JPなら変換されます。 $str = mb_convert_encoding($str,"EUC-JP","SJIS"); print mb_detect_encoding($str);  結果→EUC-JP なぜなのか原因が分からなく困っております。 どなたかご教授願いませんでしょうか? よろしくお願い致します。

    • 締切済み
    • PHP
  • UTF-8→shift-jisに変換できるサイトは

    はじめまして。 インターネット上に存在する、UTF-8の文字コードで作られたHTMLのサイトについて、そのURLを入力してボタンを押すとshift-jisに変換して表示してくれるような変換サイト(Webフィルタ?)は世の中にありますでしょうか。 あればぜひ教えてください。 もし理論的に不可能でしたら理由を簡単に教えていただけるとありがたいです。 よろしくお願いします。

  • UTF-8とは何ですか

    今更ながらですが、日本語のサイトは全部SHIFT-JISだと思ってました。 ところが日本語のサイトでもUTF-8が多いよと聞きました。 冗談だろと思ったらOKWAVEが既にUTF-8・・・ ヤフーもgooも大手サイトはほとんどUTF-8でした。 日本語=SHIFT-JISだと思ってmetaか何かで指定していますが、 ひょっとしてこれは作り直した方がいいのでしょうか。 UTF-8で検索したら日本語などの2バイト圏を考慮してないとか そういうブログも見つかったのですが、 大手サイトでUTF-8を採用しているということは、このブログはガセなのでしょうか。

    • ベストアンサー
    • HTML