• ベストアンサー

LINUXでSJIS

こんにちは、redhat linux7.1でshiftJISの環境を作成したいと思います。 現在、いろいろと調べて、 localedef -f SJIS -i ja_JP ja_JP.SJIS とやっていますが、 character map `SHIFT_JIS' is not ASCII compatible, locale not ISO C compliant といったメッセージが出てしまい、うまくいきません。 どうしたらうまくいくようになるのでしょうか?

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

  • ベストアンサー
  • k117
  • ベストアンサー率50% (7/14)
回答No.1

こんにちは、 こちらで作成した環境 (Red Hat Enterprise Linux ES)で、 あるユーザーのみをshiftJIS環境にしたのですが、 # localedef -f SJIS -i ja_JP ja_JP.SJIS で同じメッセージが出ましたが、 ユーザー(bash)の ~/.bash_profile に export LANG=ja_JP.SJIS を追加したら shiftJIS の環境として動きました。 こちらの環境ではその後、以下の問題がありましたが、 一部解決しております。 (1)Cのコンパイルでエラーまたは文字化けが出る⇒解決 (2)vi で文字化けする ⇒ 解決 (3)man で文字化けする ⇒ 未解決 (euc のユーザを使ってman を参照している。) (1)(2)の方法が必要であれば、質問いただければ回答いたします。 すべてのユーザーをshiftJISにしたわけではないので、参考になるか分りませんが、以上です。

関連するQ&A

  • phpmyadmin 言語ファイルが登録されていません: ja-sjis

    phpmyadminでshift-jisのカラムが文字化けして表示されます。 $cfg['Lang'] = 'ja-sjis'; ↑他のサイトを調べた限り、この設定でshift-jisが表示できる?と あったので設定したのですが、 「言語ファイルが登録されていません: ja-sjis」と 出て、utf-8で表示されてしまいます。 言語ファイルを別にダウンロードする必要があるのでしょうか? 可能ならあわせて以下の設定も教えてください。 (ご存知の方は意味も・・) $cfg['DefaultLang'] = 'en-utf-8'; $cfg['DefaultConnectionCollation'] = 'utf8_general_ci'; $cfg['DefaultCharset'] = 'utf-8'; すみませんが、どなたかご存知の方・・教えて頂けますと大変助かります。

  • [perl5.8] SJISで出力したはずのファイルにutf8フラグが

    1)SJISで以下の2行を含むファイルを作成し、   sjis.txtという名前で保存します。 "ホツカイドウ" "北海道" 2)SJISで以下のスクリプトを作成します。 #=== one.pl === use encoding 'Shift_JIS'; use open IN => ":encoding(Shift_JIS)"; use open OUT => ":encoding(Shift_JIS)"; my $infile = 'sjis.txt'; my $outfile = 'sjis2.txt'; open(IN, "<$infile"); @lines = <IN>; close(IN); open(OU, ">$outfile"); print OU @lines; close(OU); 3)SJIJSで以下のスクリプトを作成します #=== two.pl === use encoding 'Shift_JIS'; use open IN => ":encoding(Shift_JIS)"; use open OUT => ":encoding(Shift_JIS)"; my $infile = 'sjis2.txt'; my $outfile = 'sjis3.txt'; open(IN, "<$infile"); @lines = <IN>; close(IN); open(OU, ">$outfile"); print @lines; close(OU); 4)one.pl を実行し、続いてtwo.plを実行すると 以下のエラーがコマンドプロンプトに表示されます。 #------------------------------------------- D:\zipcode\utf8mondai>two.pl Wide character in print at D:\zipcode\utf8mondai\two.pl line 14. "・趣セゑスカ・イ・・セ橸スウ" Wide character in print at D:\zipcode\utf8mondai\two.pl line 14. "蛹玲オキ驕・ これは何故なのでしょうか。 エラーメッセージは、printしようとしている 文字列にutf8フラグがついているという意味 らしいです。

    • ベストアンサー
    • Perl
  • [perl5.8] SJISから読み込んだ~と

    sjisで書かれたファイルsjis.txtに"~"と一文字だけ 書いて、それをutf8で記述した以下のperlスクリプト で読込み、文字列マッチングをしたのですが、うまく いきません。(ちなみにソース中blockB部分を有効に し、blockAをコメントアウトするとうまくいきます) #=== match.pl =============================== #!/usr/bin/perl use encoding 'utf8'; use open IN => ":encoding(Shift_JIS)"; use open OUT => ":encoding(utf8)"; binmode STDOUT, ":raw:encoding(shiftjis)"; # === blockA === open(IN, "<sjis.txt"); @lines = <IN>; close(IN); # ============== # === blockB === # $a = "~"; # push(@lines, $a); # ============== for(@lines) {  if (/~/) {   print "WAVEDASH発見\n";  } } #============================================= ※いわゆるWAVEDASH問題に起因してそうだな、  というのはわかりますが、具体的に何が起きて  いるのかが理解できません。 原因や、どうすればこの問題を解決できるか、 ご存知の方、お知恵をお貸しください。

    • ベストアンサー
    • Perl
  • 文字コードでなる文字化けの直し方お願いします。

    海外のWEBHOSTサーバーの WE○NGというところを使っているのですが。 HTMLの記述で charset="Shift_JIS" とすると日本語が文字化けします。 Shift_JIS を EUC-JP iso2022-jp UTF-8 ASCII と色々変えてみても、全部日本語が文字化けしました;; 文字化けにならない、日本語が表示されるにはどうしたらよいでしょうか。 お知りの方 よろしくお願いします。

  • 携帯からメールを送ると文字化け・・・

    PCからメールを送ると正常に表示されてるのに、携帯からだと内容が化けてしまうという現象になってしまいました・・・。 function sendmail($to,$from,$from_name,$title,$message){ /* JISコードへのエンコーディング */ $to = mb_convert_encoding($to, "JIS","EUCJP,UTF-8,SHIFT-JIS,ASCII,SJIS,ISO-2022-JP"); $from = mb_convert_encoding($from, "JIS","EUC-JP,UTF-8,SHIFT-JIS,ASCII,SJIS,ISO-2022-JP"); $title = mb_convert_encoding($title , "JIS","EUC-JP,UTF-8,SHIFT-JIS,ASCII,SJIS,ISO-2022-JP"); $message = mb_convert_encoding($message , "JIS","EUC-JP,UTF-8,SHIFT-JIS,ASCII,SJIS,ISO-2022-JP"); /* 改行コード変換(CR+LFへ変換) */ $to = ereg_replace("\r", "", $to); $to = ereg_replace("\n", "\r\n", $to); $from = ereg_replace("\r", "", $from); $from = ereg_replace("\n", "\r\n", $from); $from_name = ereg_replace("\r", "", $from_name); $from_name = ereg_replace("\n", "\r\n", $from_name); $title = ereg_replace("\r", "", $title); $title = ereg_replace("\n", "\r\n", $title); $message = ereg_replace("\r", "", $message); $message = ereg_replace("\n", "\r\n", $message); /* メールヘッダ生成 */ $header = "From: ".$from_name." <".$from.">\n"; $header .= "Reply-To: ".$from_name." <".$from.">\n"; /* メール本文生成 */ $message = mb_convert_kana($message,"KV"); /* 送信メッセージ言語設定 */ mb_language("Japanese"); /* メール送信処理 */ $rcd = mb_send_mail($to,$title,$message,$header); 分かる方いらっしゃいましたら、よろしくお願いしますm(__)m

    • ベストアンサー
    • PHP
  • jcodeでsjisに変換できない

    メールのSubjectを取得するスクリプトを作っています。 Subjectを取得し、iso-2022をsjisに変換して表示したいのですが、変換できません。 以下、どこに問題ありますでしょうか? すみません、他人の作ったものを修正しているので、よく理解していない部分が多いです。 #--------------------------------------------- require 'jcode.pl'; $subject = 'Subject: =?iso-2022-jp?B?GyRCJWEhPCVrJE4lRiU5JUgbKEI=?='; &jcode'convert(*subject, 'sjis'); print "-->$subject\n"; #--------------------------------------------- これをWindowsのDOSプロンプトから実行しても、以下のようにShift-JISに変換されていません。 c:\test>perl test.pl -->Subject: =?iso-2022-jp?B?GyRCJWEhPCVrJE4lRiU5JUgbKEI=?= 環境 Perl v5.8.8 WindowsXP(sp2) 以上、よろしくお願いします。

    • ベストアンサー
    • Perl
  • SJIS→UTF-8の文字コード変換

    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} 句点の表示…。

    • ベストアンサー
    • Perl
  • 携帯サイト制作をしておりまして、XHTML+Shift_JISで出力で

    携帯サイト制作をしておりまして、XHTML+Shift_JISで出力できずかなり悩まされています。なんでも結構ですのでヒントをいただけましたら幸いです。。 【現象1】 文字化けする。DoCoMoとFireFoxでいずれもUTF-8のコードをShift_JISとして表示しようとしている。 (PHPの記述) header("Content-Type: application/xhtml+xml; charset=Shift_JIS"); mb_internal_encoding('UTF-8'); mb_http_output('Shift_JIS') ob_start('mb_output_handler'); (XHTMLの記述) <!DOCTYPE html PUBLIC "-//i-mode group (ja)//DTD XHTML i-XHTML(Locale/Ver.=ja/1.1) 1.0//EN" "i-xhtml_4ja_10.dtd"> <html xml:lang="ja"> <head> <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=shift_jis" /> 【現象2】 PHPでShift_JISで出力できているが、DoCoMoで見るとXHTMLではなくHTMLと解釈されてしまっている。なので<div style="background-color..といったものが無効になっている。 (PHPの記述) mb_internal_encoding('UTF-8'); mb_http_output('Shift_JIS') ob_start('mb_output_handler'); (XHTMLの記述) 現象1と同じ。 【現象3】 DoCoMoとFirefoxいずれも何も出力されなくなる。ソースも表示できない。 (PHPの記述) 現象2と同じ。 (XHTMLの記述) <?xml version="1.0" encoding="Shift_JIS"?> <!DOCTYPE html PUBLIC "-//i-mode group (ja)//DTD XHTML i-XHTML(Locale/Ver.=ja/1.1) 1.0//EN" "i-xhtml_4ja_10.dtd"> <html xml:lang="ja"> <head> <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=shift_jis" /> 【開発条件】 PHP=PHP Version 5.1.6 言語=XHTML サーバー=XSERVER 確認キャリア=DoCoMo N904i phpinfoの内容 output_buffering no value no value output_handler no value no value default_charset no value no value mbstring.detect_order auto auto mbstring.encoding_translation Off Off mbstring.func_overload 0 0 mbstring.http_input auto auto mbstring.http_output SJIS SJIS mbstring.internal_encoding EUC-JP EUC-JP mbstring.language Japanese Japanese mbstring.strict_detection Off Off mbstring.substitute_character no value no value ●謎1 header("Content-Type: application/xhtml+xml; charset=Shift_JIS");をつけると なぜShift_JISに変換してくれなくなるのでしょう? ●謎2 <?xml version="1.0" encoding="Shift_JIS"?> をつけると何も出力されなくなるのはなぜでしょう?

    • ベストアンサー
    • PHP
  • GoLive 6 の文字化け

    Mac OS X 10.3.4 でGoLive 6.0.1を使用してます。 日本語入力で文字化けして困ってます。ソースで 「"text/html;charset=ISO-8859-1"」を「text/html; charset=Shift_JIS」に 書き換えて対処していますが、どのように設定を変えれば 良いか教えて下さい。 環境設定>エンコーディング>日本語 内は x-sjis x-euc-jp iso-2022jp Mac os EUC の項目は 有るのですが shiftJIS の項目が有りません。

  • エンコードをEUC-JP⇒ShiftJISに変えたい

    モバイル用サイトをEUC-JPで作ってしまったので、Shift-JISに変えたいのですが、 どのように変えれば良いのでしょうか? PHP、MySQLの設定ではEUC-JPです。 METAタグでShift-JISに変えてみましたし、 PHPでエンコーディングをShift-JISに設定したのですが、変わりません。 -------------------------------------------------------------- <meta http-equiv="Content-Type" content="text/html; charset=SHIFT_JIS"> mb_internal_encoding("SJIS"); -------------------------------------------------------------- また一から作り直すしか術はないのでしょうか・・・?

    • 締切済み
    • PHP