プログラム言語 エンコード・デコード処理
エンコードとは
符号化
文字に対してコンピュータで扱う文字コード=コード(数値)を割り振る事
テキストエディタで文字データを作成・保存した際、
OS毎の割り振られる文字コードは以下の通り。
・Windows:Shift_JIS
・UNIX系:EUC
・Mac:Unicode
テキストエディタの機能によって保存時の文字コードを変更する事は可能
OSに関わらずUTF-8が国際的に標準化されつつある。
特にHTML5では推奨される。
漢字をUTF-8で保存すると容量が増えるという問題点あり
XMLでは、XML宣言でエンコードの種類を明示的に表記する
<?xml version=”1.0″ encoding=”Shift_JIS”?>
<a>~</a>
割り振られた文字コードを解析して読み込む事をデコードと言う。
割り振られた文字コードと違う文字コードで読み込んだ場合、文字化けする。
読込
s = File.ReadAllLines(@”D:\~txt”, Encoding.Default);
s = File.ReadAllLines(@”D:\~.txt”, Encoding.GetEncoding(name: “Shift_JIS“));
s = File.ReadAllLines(@”D:\~.txt”, Encoding.Unicode);
s = File.ReadAllLines(@”D:\~.txt”, Encoding.UTF8);
書込
File.WriteAllLines(@”D:\~.txt”, @”内容”, Encoding.GetEncoding(name: “Shift_JIS“));
File.WriteAllLines(@”D:\~.txt”, @”内容”, Encoding.Unicode);
File.WriteAllLines(@”D:\~.txt”, @”内容”, Encoding.UTF8);
URLエンコード・デコード
関数 | 文字コード | 備考 |
---|---|---|
encodeURIdecodeURI | UTF8 | #$&+,/:;=?@は変換しない |
encodeURIComponentdecodeURIComponent | UTF8 | #$&+,/:;=?@を変換する |
BASE64エンコード・デコード
BASE64とは?
バイナリデータ→テキストデータ
への変換方式
英数字のみで構成される
暗号ではない
import org.apache.commons.codec.binary.Base64;
public class base64test {
public static void main(String[] args) {
try{
String after = encodeBase64(“~”);
}
catch ( ~ ){
~
}
}
public static String encodeBase64(String before) throws IOException {
byte[] out = Base64.encodeBase64(before.getBytes());
return new String(out, “shift_jis”);
}
}
”id”: “1234567890”,
”name”: “米 良太”,
”email”: “yone@office-yone.com”
}
エンコード
JSON変換
let json = JSON.stringify(user);
日本語等の変換
let unescaped = unescape(encodeURIComponent(json));
let encoded = window.btoa(unescaped);
デコード
let decoded = window.atob(encoded);
日本語等の変換
let escaped = decodeURIComponent(escape(decoded));
after = encode(“~”)
after = decode(“~”)
End Sub
‘Base64文字列にエンコードする
Public Function encode(val As String) As String
Dim objBase64 As Object
Dim b() As Byte
b = stringToByte(val)
‘Msxml2.DOMDocumentオブジェクト = XML操作オブジェクト
Set objBase64 = CreateObject(“MSXML2.DOMDocument”).createElement(“b64”)
objBase64.DataType = “bin.base64”
objBase64.nodeTypedValue = b
encode = objBase64.text
Set objBase64 = Nothing
End Function
‘Base64文字列をデコードする
Public Function decode(val As String) As String
Dim objBase64 As Object
‘Msxml2.DOMDocumentオブジェクト = XML操作オブジェクト
Set objBase64 = CreateObject(“MSXML2.DOMDocument”).createElement(“b64”)
objBase64.DataType = “bin.base64”
objBase64.text = val
Dim b() As Byte
b = objBase64.nodeTypedValue
decode = byteToString(b)
Set objBase64 = Nothing
End Function
‘文字列バイト列に変換する
Public Function stringToByte(ByVal strData As String) As Byte()
Dim objStream As Object
Set objStream = CreateObject(“ADODB.Stream”)
objStream.Open
objStream.Type = adTypeText
objStream.Charset = “utf-8”
objStream.WriteText strData
objStream.Position = 0
objStream.Type = adTypeBinary
objStream.Position = 3
stringToByte = objStream.Read
objStream.Close
Set objStream = Nothing
End Function