約 5,330,789 件
https://w.atwiki.jp/dai7messi19/pages/12.html
javaでの文字コード判定法 SJIS protected final InputStream transform( final InputStream in, final String[] convertTable ) throws IOException { logger.dump("SJIS判定処理開始"); // 格納用変数の生成 StringBuilder sb = new StringBuilder(); int code = 0; int wideChar = 0; // 判定フラグ boolean isWideCharMode = false; while ((code = in.read()) -1) { // 読み込んだ文字数分繰り返します if (isWideCharMode) { // 読んだのが2byte文字の2byte目の場合 wideChar += code; // 文字コード変換表格納Arrayから変換後のコードを取得してsbに格納する。 if (convertTable[wideChar] == null) { convertTable[wideChar] = QUESTION; } sb.append(convertTable[wideChar]); // 再び判定を行うためにフラグをfalseにする。 isWideCharMode = false; continue; } if (code BORDER_CHAR) { // 読んだのが1byte文字の場合 // 文字コード変換表格納Arrayから変換後のコードを取得してsbに格納する。 if (convertTable[code] == null) { convertTable[code] = QUESTION; } sb.append(convertTable[code]); isWideCharMode = false; } else if ( (code = BORDER_KANA_MINI) (code = BORDER_KANA_MAX) ) { // 読んだのが半角カナの場合 // 文字コード変換表格納Arrayから変換後のコードを取得してsbに格納する。 if (convertTable[code] == null) { convertTable[code] = QUESTION; } sb.append(convertTable[code]); isWideCharMode = false; } else { // 読んだのが2byte文字の1byte目の場合 // 1byte目に256をかけます wideChar = code * BYTE2; // 2byte文字の2byte目にする為にフラグをtrueにする isWideCharMode = true; } } logger.dump("SJIS判定処理終了"); // System.out.println(sb.toString()); // 読み込んでUTF-16に変換した文字列をConvertResultにセットします logger.dump("セットする値=" + sb.toString()); setSjisConvertResult(sb.toString()); // UTF-16に変換して返却 return new ByteArrayInputStream(sb.toString().getBytes("UTF-16")); }
https://w.atwiki.jp/dotcom/pages/120.html
サーバーで作成されたデータファイル(csv)をバックアップしてて思ったこと。 どうやらUTF-8で作ってるみたい。 でもね、Winな開発環境ではMS932で作ってた。 読み込みも同じ。 これ、一緒にしたいよね? デフォルトのエンコードの設定って?MS932(Windous-31J) 読み込む時に文字コードを指定する文字コードを指定しなくていいならFileReader 文字コードを指定するならInputStreamReader 実際にはこんな風に使ってみた 書き込む時に文字コードを指定する文字コードを指定しなくていいなら 文字コードを指定するならOutputStreamWriter 実際にはこんな風に使ってみた デフォルトのエンコードの設定って? ファイルを読み込んだり書き込んだりするときに勝手に使ってくれるデフォルトの文字コードが設定されてるんだって。 それを調べる方法は System.out.println(System.getProperty("file.encoding")); ってするとコンソールにでてくるぜよ。 うちの開発環境での「MS932」 ってなんだろ?(無知 MS932(Windous-31J) そんなときにはうぃきぺでぃあ http //ja.wikipedia.org/wiki/Windows-31J またびるげいつですか。。。 まてよ。 Windous-31Jってよく目にするわ。 JSPで文字コードの設定とかするときばしばし見かけますなあ。 シフトJISの拡張版とな。 開発環境はWinマシンだからデフォルトがMS932なわけね。で、ファイル読み込みとか書き込みのときに文字コード指定してないからこのMS932で読んじゃってるわけかあ。 なるほど。。 つまりこれをUTF-8にすればいいわけね。 やっちゃおう。やってみますよ。 読み込む時に文字コードを指定する うちのはcsvファイルを入力するです。 txtとかバイナリファイルなら↓のやり方で大丈夫だって。 文字コードを指定しなくていいならFileReader これまでこんな風に読み込んでました。 BufferedReader inFile = new BufferedReader(new FileReader(filename.csv)); 読む時はこんな。例外は省略 while (inFile.ready()) { System.out.println(inFile.readLine()); } inFile.close(); 文字コードを指定するならInputStreamReader 今回使うのはこれこれ。 InputStreamReader(Stream,文字コード) とほほさんのページ>http //www.tohoho-web.com/java/file.htm#InputStreamReader これはバイトストリーム(Stream)を指定しないといかんのでFileInputStreamを作ってファイル名を指定。それを使います。 とほほさんのページ>http //www.tohoho-web.com/java/file.htm#FileInputStream InputStreamReader isr = new InputStreamReader(new FileInputStream(filename.csv),"UTF-8")); これで文字コードは指定できた。 実際にはこんな風に使ってみた ああでも1行ずつ読み込んでくれてるってのは生かしたい。上のままだと読むだけ。 じゃあBufferedReaderを残してFileReaderの代わりにInputStreamReaderを使ってみましたよ。どうよ? BufferedReader inFile = new BufferedReader(new InputStreamReader(new FileInputStream(filename.txt),"UTF-8")); ラップしまくりでわかんないですね。 これと同じ意味 FileInputStream fis = new FileInputStream(filename.txt); InputStreamReader in = new InputStreamReader(fis,"UTF-8"); BufferedReader inFile = new BufferedReader(in); BufferdReaderでラップしたので1行ずつ読み込んでくれました。 使い方は最初のときと同じ。変わったのはFileRearderがInputStreamRearderにしただけ。 書き込む時に文字コードを指定する やはりcsvファイルとして書き込むです。 文字コードを指定しなくていいなら これまでこんな風に書き込んでました。 PrintWriter outFile = new PrintWriter(new BufferedWriter(new FileWriter(new File(filename.csv).getAbsolutePath()))); 書く時はこんな。例外は省略 for (int i = 0 ; i 10 ; i++) { outFile.println("これで,おっけー?," + i + "回目" ); } outFile.close(); 文字コードを指定するならOutputStreamWriter 今回使うのはこれこれ。 OutputStreamWriter(Stream,文字コード) 読み込みの時と似てるね。 やっぱりFileOutputStreamを作ってファイル名を指定。 OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream(filename.csv),"UTF-8"); これで文字コードは指定できた。 実際にはこんな風に使ってみた やっぱ1行ずつ書き込むのって生かしたい。 じゃあBufferedWriterを残してFileWriterの代わりにOutputStreamWriterを使ってみましたよ。どうよ? PrintWriter outFile = new PrintWriter(new BufferedWriter(new OutputStreamWriter(new FileOutputStream(filename.csv),"UTF-8"))); ラップしまくりでわかんないですね。 使い方は最初のときと同じ。変わったのはFileWriterがOutputStreamWriterにしただけ。
https://w.atwiki.jp/skill2linux/pages/16.html
基本的に、utf-8 を使用するのが好ましい。 だが、結構統一するのが面倒だったりする。 まず、 use utf8; を宣言して、スクリプト自体が utf8 を使用している事を明示化する。 ※ 旧 Perl は、色々な文字コードが存在しているため、utf8 であることを明示化する必要がある。 その次に、 標準出力、標準エラー出力、標準入力を明示化する binmode STDOUT, " utf8"; # 標準出力 binmode STDERR, " utf8"; # 標準エラー出力 binmode STDIN, " utf8"; # 標準入力 後は、 ソース自体の文字コードを utf8 にすること。 これで、記述するスクリプトは、utf8 で統一される。 ※ 標準入力(ようは受け取るデータ) が、utf8 じゃない場合は、やっちゃうとアウト ※ 例えば、OS の文字コードが、euc-jp とかだと、入ってくるデータがアレなので、駄目。 但し、他のライブラリの関数を使用した場合は、 戻り値や、エラーメッセージが utf8 で返ってこない可能性があるので、 文字コードを判断しなければならない。 例えば以下の場合… use utf8; eval { OPEN( IN, $file_path) or die "$!"; }; if($@) { print $@; } $@ に何の文字コードが入ってくるかは、状況によりけり。 その為、$@ が utf8 かを判断する必要がある。 その為、 以下のよう、utf8 に decode する。 use utf8; use Encode; eval { OPEN( IN, $file_path) or die "$!"; }; if($@) { # UTF8ではない場合 unless( utf8 is_utf8($@) { # utf8 にデコード(UTF8 に変換)する $@ = Encode decode( utf-8 , $@); } print $@; } 他の注意点としては、 標準出力、標準エラー出力、標準入力は既に utf8 としている為、 encode して出力する必要はないと言うこと。 encode( utf-8 , "あああ" ); としてしまうと、utf8 - utf8 で文字化ける。 但し、他の文字コードに変換するときは必須。 例えば、cp932 文字コードでファイル出力する場合は、 encode( cp932 , "あああ" ); で、明示的に変換する事。
https://w.atwiki.jp/abwiki/pages/58.html
UTF82SJIS http //blog.goo.ne.jp/xmldtp/e/7eaeeb3dabfe975dbc57f73aefb1c059からコピペ #N88BASIC Function utf8ToSjis(utf8 As *Byte) As *Byte Dim utf16 As *Word [[Dim]] wlen As Long Dim sjis As *Byte utf8ToSjis = NULL If utf8 = NULL Then Exit Function [[End]] If '==============================' 'UTF8=>UTF16変換 ' '==============================' 'まずは、wlenの長さをとる wlen = MultiByteToWideChar(CP_UTF8, 0, utf8, -1, NULL, 0) If wlen = 0 Then Exit Function End If 'utf16の領域確保 utf16 = calloc(wlen + 1) If utf16 = NULL Then Exit Function End If 'utf16変換 If MultiByteToWideChar(CP_UTF8, 0, utf8, -1, utf16, wlen) = 0 Then free(utf16) Exit Function End If '==============================' 'UTF16=>ShiftJIS変換 ' '==============================' 'まずは、長さを取得 Dim mlen As Long mlen = WideCharToMultiByte(CP_ACP,0,utf16,-1,NULL,0," ",NULL) If mlen = 0 Then free(utf16) Exit Function End If '領域確保 sjis = calloc(mlen + 1) If sjis = NULL Then free(utf16) Exit Function End If 'utf16変換 If WideCharToMultiByte(CP_ACP,0,utf16,-1,sjis,mlen," ",NULL) = 0 Then free(utf16) free(sjis) Exit Function End If free(utf16) utf8ToSjis = sjis End Function Dim utf8[1000] As Byte Dim sjis As *Byte Dim hF As HANDLE Dim r As DWord hF = CreateFile("utf8.txt", GENERIC_READ,0,ByVal 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,0) ReadFile(hF, utf8,1000, Varptr(r),ByVal 0) sjis = utf8ToSjis(utf8) [[Print]] [[MakeStr]](sjis) CloseHandle(hF) free(sjis) [[Input]] sjis WinAPIを使うべき処理 ShiftJIS→Unicode(UCS-2)変換 MultiByteToWideChar関数を使う。 MultiByteToWideChar(外部ページ) に詳しい。誰かコピーして。 Unicode(UCS-2)→ShiftJIS変換 WideCharToMultiByte関数を使う。 WideCharToMultiByte(外部ページ) に詳しい。誰かコピーして。 WinAPIを使わなくてもプログラム側で簡単に変換できるもの ShiftJIS→EUC-JP変換 ShiftJISとEUC-JPはエンコードが違うだけで同じ符号体系を用いている。その為、この変換は比較的容易い。 Sub SJIS2EUCJP(src As *Byte,dst As *Byte) Dim is=0 As Long,id=0 As Long Do If src[is]=0 then dst[id]=0 Exit Do Else If src[is] H80 then dst[id]=src[is] is++ id++ Else If ( HA1 =src[is]) And (src[is] = HDF) then dst[id]= H8E dst[id+1]=src[is] is++ id+=2 Else Dim a As Long,b As Long b=src[is+1]- H3F If b=0 then dst[id]=0 Exit Do End If If b 63 then b-- a=src[is]*2- H101 If a 62 then a-=128 If b 94 then b-=94 a++ End If If (a 1) Or (94 a) Or (b 1) Or (94 b) then dst[id]=0 Exit Do End If dst[id]=a+ HA0 dst[id+1]=b+ HA0 is+=2 id+=2 End If Loop End Sub EUC-JP→ShiftJIS変換 Sub EUCJP2SJIS(src As *Byte,dst As *Byte) Dim is=0 As Long,id=0 As Long Do If src[is]=0 then dst[id]=0 Exit Do Else If src[is] H80 then dst[id]=src[is] is++ id++ Else If src[is]= H8E then dst[id]=src[is+1] is+=2 id++ Else If src[is]= H8F then'JIS X 0212-1990文字集合だが、Shift-JISには無いため?で代用する。 dst[id]=[[Asc]]("?") is+=3 id++ Else Dim a As Long,b As Long a=src[is]- HA0 b=src[is+1]- HA0 If (a 1) Or (94 a) Or (b 1) Or (94 b) then dst[id]=0 Exit Do End If a-- If a and 1 then a-- b+=94 End If a=(a 1)+ H81 If b 63 then b++ If a H9F then a+=64 dst[id]=a dst[id+1]=b+ H3F is+=2 id+=2 End If Loop End Sub Unicode(UCS-2)→Unicode(UTF-8)変換 UCS-2とUTF-8はエンコードが違うだけで同じ符号体系を用いている。その為、この変換は比較的容易い。 Sub UCS22UTF8(src As *Byte,dst As *Byte) Dim is=2 As Long,id=0 As Long Dim fBE As Long If (src[0]= HFF) and (src[1]= HFE) then'BOM fBE=0 Else If (src[0]= HFE) and (src[1]= HFF) then fBE=1 Else'default=Big Endian(RFC 2781) fBE=1 is-=2 End If Do If src[is]=0 And src[is+1]=0 then dst[id]=0 Exit Do Else Dim c As Long c=src[is+(1-fBE)] As Long*256+src[is+fBE] If c H80 then dst[id]=c id++ Else If c H800 then dst[id]= HC0 Or (c 6) dst[id+1]= H80 Or (c and H3F) id+=2 Else If c H10000 then dst[id]= HE0 Or (c 12) dst[id+1]= H80 Or ((c 6) and H3F) dst[id+2]= H80 Or (c and H3F) id+=3 Else dst[id]=0 Exit Do End If is+=2 End If Loop End Sub Unicode(UTF-8)→Unicode(UCS-2) Sub UTF82UCS2(src As *Byte,dst As *Byte) Dim is=0 As Long,id=2 As Long If (src[0]= HEF) And (src[1]= HBB) And (src[2]= HBF) then is+=3 dst[0]= HFE dst[1]= HFF Do If src[is]=0 then dst[id]=0 Exit Do Else Dim c As Long If src[is] H80 then c=src[is] is++ Else If src[is] HE0 then If src[is+1]=0 then dst[id]=0 Exit Do Else c=((src[is] And H1F) 6) Or (src[is+1] And H3F) is+=2 End If Else If src[is] HF0 then If src[is+1]=0 then dst[id]=0 Exit Do Else If src[is+2]=0 then dst[id]=0 Exit Do Else c=((src[is] And H0F) 12) Or ((src[is+1] And H3F) 6) Or (src[is+2] And H3F) is+=3 End If Else If src[is] HF8 then If src[is+1]=0 then dst[id]=0 Exit Do Else If src[is+2]=0 then dst[id]=0 Exit Do Else If src[is+3]=0 then dst[id]=0 Exit Do Else c=((src[is] And H03) 18) Or ((src[is+1] And H3F) 12) Or ((src[is+2] And H3F) 6) Or (src[is+3] And H3F) is+=4 End If Else dst[id]=0 Exit Do End If If c H10000 then'UCS2には拡張領域が無いため表現できない。 dst[id]=0 dst[id+1]=Asc("?") id+=2 Else dst[id]=c 8 dst[id+1]=c And HFF id+=2 End If End If Loop End Sub nkf32を使って nkf32は文字コードの各種変換を行う便利ライブラリ。 DLLとして提供されていて、使い易くなってる。 ABも実はこれを使っている。SubOperationフォルダーを参照。 使い方は結構簡単で、例えば次のようにするだけで、何らかの文字コードのファイルをEUCに変換してくれる。 #N88BASIC'宣言Declare Sub GetNkfVersion Lib "Nkf32.dll" (verStr As *Byte)Declare Function SetNkfOption Lib "Nkf32.dll" (optStr As *Byte) As LongDeclare Sub NkfConvert Lib "Nkf32.dll" (outStr As *Byte, inStr As *Byte)Declare Sub ToHankaku Lib "Nkf32.dll" (inStr As *Byte)Declare Sub ToZenkakuKana Lib "Nkf32.dll" (outStr As *Byte, inStr As *Byte)Declare Sub ToMime Lib "Nkf32.dll" Alias "EncodeSubject" (outStr As *Byte, inStr As *Byte)Declare Sub EncodeSubject Lib "Nkf32.dll" (outStr As *Byte, inStr As *Byte)Dim vstr[478] As ByteDim in As *ByteDim out As *ByteDim size As DWordGetNkfVersion(vstr)Print "nkf32のバージョン→" MakeStr(vstr)in = LoadFile(VarPtr(size))If in And size Then Print "読み取りOK" Else EndIf SetNkfOption("-e") = 0 Then Print "EUCに変換します"out = calloc(size+1)NkfConvert(out, in)SaveFile(out, lstrlen(out))Print "おわり"End'ファイルを開いて中身を返すFunction LoadFile(sss As *Long) As *ByteDim ofn As OPENFILENAMEDim buffer[333] As Byteofn.lStructSize=SizeOf(OPENFILENAME)ofn.hwndOwner=GetActiveWindow()ofn.lpstrFilter=Ex"テキスト ファイル(*.txt)\0*.txt\0すべてのファイル(*.*)\0*\0"ofn.nFilterIndex=1ofn.lpstrFile=bufferofn.nMaxFile=333ofn.lpstrTitle="ファイルを開く"ofn.Flags=OFN_FILEMUSTEXIST or OFN_PATHMUSTEXISTIf GetOpenFileName(ofn)=0 Then Exit Function'OpenDim hF As HANDLEDim r As DwordDim x As *BytehF = CreateFile( buffer, GENERIC_READ, 0, ByVal 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0)SetDWord(sss, GetFileSize(hF, 0))x = calloc(GetDword(sss)+1)ReadFile(hF, x, GetDword(sss), sss, ByVal 0)CloseHandle(hF)LoadFile = xEnd Function'oooの内容を保存Function SaveFile(ooo As *Byte, sss As Long) As LongDim ofn As OPENFILENAMEDim buffer[333] As Byteofn.lStructSize=SizeOf(OPENFILENAME)ofn.hwndOwner=GetActiveWindow()ofn.lpstrFilter=Ex"テキスト ファイル(*.txt)\0*.txt\0すべてのファイル(*.*)\0*\0"ofn.nFilterIndex=1ofn.lpstrFile=bufferofn.nMaxFile=333ofn.lpstrTitle="ファイルを保存"ofn.Flags=OFN_FILEMUSTEXIST or OFN_PATHMUSTEXISTIf GetSaveFileName(ofn)=0 Then Exit Function'OpenDim hF As HANDLEDim w As DwordhF = CreateFile(buffer, GENERIC_WRITE, 0, ByVal 0, CREATE_NEW, FILE_ATTRIBUTE_NORMAL, 0)WriteFile(hF, ooo, sss, VarPtr(w), ByVal 0)CloseHandle(hF)SaveFile = 44End Function
https://w.atwiki.jp/kodan/pages/126.html
対象はinputStream BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream)); String str; StringBuffer buf = new StringBuffer(); while ((str = bufferedReader.readLine()) != null) { buf.append(str); } String result = buf.toString();
https://w.atwiki.jp/phptest/pages/29.html
難しいし、他言語はTもよく知らない為、指南もしにくいので後回しでいいです。 文字コードとは 文字コードとエンコーディングとcharsetについてより複雑な説明 参照:「いいから俺文字コード」シリーズ Java Javaにおいては、文字を扱うクラスや型(String, StringBuffer, char)は、すべて UTF-16 で符号化されている。 他の文字コードと相互変換する場合は、byte[] 型を通す。 System.out.println(System.getProperty("file.encoding")); //MS932 String str = "テスト"; byte[] codes = str.getBytes(); //プラットフォーム別(※実行時の環境変数か何かで決定される。なんだっけ?) codes = str.getBytes("MS932"); //コード名称明記 str = new String(codes, "MS932"); //byte[] から char[] に変換。 System.out.println("codes "+codes); //byteコードなので出鱈目に見える System.out.println("REcode "+str); //REcode テスト 変換テーブルは JRE/JVM に内蔵される(※のか?)eclipseで文字コードを設定できます。 エンコーディングの変更方法 PHP デフォルトのエンコーディングを変更する場合はphp.iniの1198行目あたりにある記述を書き換えます mbstring.internal_encoding = SJIS エンコーディング mb_convert_encoding関数を使用できます。 $str = "元になっている文字列"; print($str." br "); //もとになっている文字列 $str = mb_convert_encoding($str, "UTF-8", "auto"); print($str); //蜈�↓縺ェ縺」縺ヲ縺�k譁�ュ怜� 参照:PHPマルチバイト文字列関数 PHPでもヘッダーを使って文字コードの記述が出来ます。 ?php header("Content-Type text/html; charset=SJIS"); echo " h1 インデックス /h1 "; php? ただし、ヘッダーより前に構文が書けなくなるので、html記述などが出来なくなります。 参照:PHPマニュアル-ネットワーク関数 javascript htmlファイルのmetaタグ内部につけることで宣言可能です。 バージョンやドキュメント宣言とは分けて書くことが出来ます。 !DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http //www.w3.org/TR/html4/loose.dtd" head meta http-equiv="Content-Type" content="text/html;charset=UTF-8" meta http-equiv="Content-Script-Type" content="text/javascript" title JavaScript テスト /title /head body p Test /p /body /html さらに内部エンコーディングはUTF-16でできており、文字コード変換用にescape関数、unescape関数が存在します。 var str = "\u3042\u3044\u3046\u3048\u304a"; var str2 = "あいうえお"; document.write(escape("\u3042\u3044\u3046\u3048\u304a")); //%u3042%u3044%u3046%u3048%u304A document.write(unescape("\u3042\u3044\u3046\u3048\u304a")); //あいうえお document.write(str); //「あいうえお」と出ましたが環境で変化するかもしれません document.write(escape(str2)); //\u3042\u3044\u3046\u3048\u304a document.write(unescape(str2)); //あいうえお 参照:Javascriptのescape関数で判読を難しくする
https://w.atwiki.jp/dragonkiller/pages/207.html
文字コード ▲トップへ戻る 目次 文字コード/目次概要/主な種類/キーワード ショップ/Shift_JIS/UTF-8/EUC-JP ポータルサイト/Shift_JIS/UTF-8/EUC-JP 検索エンジン/Shift_JIS/UTF-8/EUC-JP ホームページ/Shift_JIS/UTF-8/EUC-JP ブログ/Shift_JIS/UTF-8/EUC-JP WIKI/Shift_JIS/UTF-8/EUC-JP 掲示板/Shift_JIS/UTF-8/EUC-JP テンプレート/Shift_JIS/UTF-8/EUC-JP 参考資料 脚注 関連項目 外部リンク 検索/キーワード/画像/掲示板 概要 主な種類 Shift_JIS UTF-8 EUC-JPUNIXなど使用 キーワード ■文字コードの選択 サーバーの動作環境で異なる ■文字化け 異なる環境から移行(引越し)した場合に影響があると思われる ■アドレス 日本語を用いたアドレスはそのまま使えない URLアドレスをデコード ショップ Shift_JIS ■Amazon.co.jp http //www.amazon.co.jp/ ■ビックカメラ.com http //www.biccamera.com/ ■ソフマップ.com http //www.sofmap.com/ UTF-8 ■ヨドバシ.com http //www.yodobashi.com/ EUC-JP ■DMM http //www.dmm.com/ ■楽天市場 http //www.rakuten.co.jp/ ポータルサイト Shift_JIS ■@nifty http //www.nifty.com/ ■Excite エキサイト http //www.excite.co.jp/ UTF-8 ■Yahoo! JAPAN http //www.yahoo.co.jp/ ■はてな http //www.hatena.ne.jp/ ■BIGLOBE http //www.biglobe.ne.jp/ EUC-JP ■Infoseek楽天 http //www.infoseek.co.jp/ 検索エンジン Shift_JIS UTF-8 ■google http //www.google.com/ ■yahoo http //search.yahoo.co.jp/ ■fc2 http //search.fc2.com/ ■楽天ウェブ検索 http //search.www.infoseek.co.jp/ EUC-JP ホームページ Shift_JIS ■Yahoo!ジオシティーズ http //geocities.yahoo.co.jp/ ■infoseek isweb http //isweb.www.infoseek.co.jp/ UTF-8 EUC-JP ■FC2WEB http //www.fc2web.com/ ブログ Shift_JIS UTF-8 ■liveddor http //blog.livedoor.com/ ■楽天 http //plaza.rakuten.co.jp/ ■Excite ブログ http //www.exblog.jp/ EUC-JP ■yahoo http //blogs.yahoo.co.jp/ ■fc2 http //blog.fc2.com/ ■goo ブログ http //blog.goo.ne.jp/ ■はてなダイアリー http //d.hatena.ne.jp/ ■Ameba (アメーバ) http //ameblo.jp/ WIKI Shift_JIS UTF-8 ■AWikipedia http //ja.wikipedia.org/ ■@ウィキ http //atwiki.jp/ ■fc2 http //wiki.fc2.com/ EUC-JP ■livedoor wiki http //wiki.livedoor.com/ 掲示板 Shift_JIS ■2ちゃんねる http //2ch.net/ UTF-8 EUC-JP テンプレート Shift_JIS UTF-8 EUC-JP 参考資料 脚注 関連項目 外部リンク 検索 キーワード ■Google 文字コード 画像 ■Google AAA BBB ■Flicker AAA BBB 掲示板 ■2ちゃんねる 文字コード
https://w.atwiki.jp/atyou/pages/73.html
文字コードの基本 http //itpro.nikkeibp.co.jp/article/lecture/20070209/261534/ Ascii Code http //homepage1.nifty.com/tabotabo/ccc/asci.htm 文字コードの話 http //euc.jp/i18n/charcode.ja.html Unicodeでのバックスラッシュと¥の違い http //likealunatic.jp/2008/01/10_unicode.php 使用したコード JIS X 02132000-2004 surrogate pairs http //w3.kcua.ac.jp/~fujiwara/jis2000/jis2004/jisx0213-2004-surro.html JIS2000-2004情報 http //w3.kcua.ac.jp/~fujiwara/jis2000/ Shift_JIS 文字コード表 http //hp.vector.co.jp/authors/VA039433/shift_jis-table.html 文字コード表 シフトJIS(Shift_JIS) http //charset.7jp.net/sjis.html JIS X 0213 FAQ http //seclan.dll.jp/ccjx0213.htm [ThinkIT] 第1回:Windows Vistaだと何が起こるのか (1-3) http //www.thinkit.co.jp/free/article/0707/14/1/ シフトJIS キャラクタコード表 http //www.tamasoft.co.jp/ja/general-info/sjis2.html 文字コードについて(シフトJISの問題) http //park3.wakwak.com/~ozashin/sw_tips/webapp_tips/sjis_charset.html JIS X 0213 - Wikipedia http //ja.wikipedia.org/wiki/JIS_X_0213 Shift-JISとUnicodeの相互変換 http //www.astralsystem.com/ud/jis2uni.html VistaでUnicode以外の選択肢はなかったのか?──京大の安岡助教授が語る:ITpro http //itpro.nikkeibp.co.jp/article/COLUMN/20061222/257650/ Vistaで化ける字,化けない字:ITpro http //itpro.nikkeibp.co.jp/article/COLUMN/20061211/256519/ 文字コードの識別 http //www.asahi-net.or.jp/~ax2s-kmtn/ref/code_id.html @IT:Windows TIPS -- Tips:文字コードを変換する http //www.atmarkit.co.jp/fwin2k/win2ktips/395codeconv/codeconv.html
https://w.atwiki.jp/wiki2_rock/pages/12.html
文字コードの種類 日本語の文字セットは、ISO-2022-JP(JIS)、Shift_JIS、Windows-31J、EUC_JPの4種類である。 Shift_JIS 日本語文字コードの一つ。Microsoft社によって策定された。文字の1バイト目を見るだけで漢字か1バイト文字(いわゆる半角英数字)か分かる、等幅フォントで表示した場合に画面上の桁数とバイト数が一致するなどの特長から、MS-DOSやWindows、Mac OSなど、パソコンの標準文字コードとして広く普及した。 Shiftは小文字、JISは大文字、間はハイフンではなくアンダースコアなので要注意。 Windows-31J 別名「Windows Codepage 932」。Shift_JISを拡張した、Windows環境で標準的に用いられている文字セット。 WJavaではJDK 1.2以降で「MS932」という名称でサポートされており、JDK 1.4.1以降はWindows-31JというIANAの正式名称でも利用可能になっている。 Windows-31Jは、以下のようなWindows機種依存文字を含んでおり、JPSのpageディレクティブにSHIFT-JISを指定した場合は以下の文字は文字化けする。 NEC特殊文字①②③ⅠⅡⅢ㍉㌔㌢№℡㈱など IBM特殊文字髙など MacintoshなどのOSにおける「Shift_JIS」はWindows-31Jとは異なる。例えばWindowsにおけるの文字コード0x8740に対し、Macintoshでは「(日)」というMac機種依存文字が割り当てられている。 ページ内でWindows機種依存文字を使用したいときは、Shift_JISの代わりにWindows-31Jを指定することで文字化けを回避可能なケースもある。Safariでは、文字コードにWindows-31Jが正しく指定されていれば、Windows機種依存文字も表示可能。 ISO-2022-JP 別名JIS。JIS規格によって規定されている日本語の文字コードの一つ。Shift JISコード、日本語EUCと並んでインターネット上でよく使われる文字コードである。 EUC_JP Extended UNIX Code。 日本語UNIXシステム諮問委員会の提案に基づいて1985年にAT T社が定めた、複数バイトの文字を扱う文字コードの枠組み。日本語だけでなく複数バイト言語の各国の文字コードが規定されている。日本語のEUCコードを特に「EUC-JP」「日本語EUC」と呼ぶ。 参考:UTF UCS-2やUCS-4(Unicode)で定義される文字集合を用いて記述された文字列をコンピュータが扱いやすいようにバイト列(数値の列)に変換する方式。1文字を1~6バイト(現状では最長4バイト)の可変長の数値(バイト列)に変換するUTF-8、UCS-2の集合の中にUCS-4の一部の文字を埋め込むためのUTF-16、Unicodeをメールで使用するためのUTF-7、すべてのUCS-4文字を4バイトで表現するUTF-32の4種類がある。 文字コード変換について 概要 Javaでは、すべての文字をUnicodeとして処理している。そのため、JVMが外部に対して文字を出力する際には、Unicode→各種文字コードへの変換が必要になる。逆にJVMが外部から文字を入力する場合は各種文字コード→Unicodeの変換が必要になる。 Webアプリケーションでは、以下のような状況で文字の相互変換が行われる。 JSPファイルがサーブレット・コンテナに読み込まれるとき Webブラウザからリクエストを受信するとき Webブラウザにレスポンスを送信するとき データベースやファイルにアクセスするとき メールを送受信するとき 変換方式の指定 pageEncodingWebアプリケーションサーバが、外部→JVMにファイルが入力された場合(クライアントからのHTTPリクエスト)、文字セットからUnicodeに変換する際に用いるエンコーディング方式を指定する。 contentTypeJVMからコンテンツをWebブラウザに出力する際にWebアプリケーションが使用するUnicode→文字セットの変換方式。 相互変換のミスマッチ たとえば以下のように相互変換方式を指定したとする。 %@page language="java" contentType="text/html; charset=Shift_JIS" pageEncoding="Windows-31J" % このとき「~-¢£」などの文字をアプリで使用した場合、文字化けが発生する。 メカニズムは以下のとおり。 ページエンコーディングが「Windows-31J」なので、WASはJSPファイルがWindows-31Jで作成されたものとしてUnicodeに変換する。 コンテントタイプが「Shift_JIS」なので、WASはUnicodeから「Shift_JIS」に文字コードを変換する。 上記に示した文字に対する変換コードポイントが2方式の間で異なるため、元の文字に戻すことができずに文字化けが起こる。 指定方法 contentTypeの指定 JSPがサーバからクライアントにデータを返却する際、pageディレクティブ-contentType-charsetに指定されたエンコーディング方式に従って、Unicodeから各文字セットに変換する。 contentTypeを指定しない場合、デフォルトでは %@page contentType="text/html; charset=ISO-8859-1" % が指定される。ISO-8859-1は英数字と記号のみの文字セットなので、日本語などの2バイト文字は表示できない。したがって、日本語を扱いたい場合(扱いたくない訳ないがな)以下のように明示的に指定する。 %@page contentType="text/html; charset=Windows-31J" % pageEncodingの指定 クライアントからのリクエストデータを、WASがUnicodeに変換する際のエンコーディング方式を指定する。省略することもできるが、その場合はcontentTypeと同じ方式で変換される。 %@page pageEncoding="Windows-31J" %
https://w.atwiki.jp/ohden/pages/353.html
文字コード関係まとめ Unicode 表記 Microsoftコードページ 文字集合と符号化方式 S-JIS CP932 マイクロソフト標準キャラクタセットをシフト符号化表現 JIS CP50220 マイクロソフト標準キャラクタセットをRFC1468符号化表現 EUC CP51932 マイクロソフト標準キャラクタセットをGR表現 Unicode(UTF-16LE) CP1200 UnicodeをUTF-16(LittleEndian)で符号化 UnicodeBE(Big-Endian) CP1201 UnicodeをUTF-16(BigEndian)で符号化 UTF-8 CP65001 UnicodeをUTF-8で符号化 『\u』『%u』って書いてあるのはUnicodeBE? http //www.syboos.jp/java/doc/EscapeString.html 更新日: 2011年10月13日 (木) 16時03分54秒 名前 コメント すべてのコメントを見る