golang base 64 StdEncodingとURLEncodingピット
今日はテンセントの通用OCR(Optical Character Recognition、光学文字認識、文字認識)を遊びたいと思っています.公式サイトにはphpとpyの例しかありません.
午後中、最後にbase 64に植えられたことに気づきました
大体説明します stdEncodingは標準のbase 64で、これは言うまでもなく base 64は、私たちのデータを52文字の大文字、「/」、「+」、0-9に変換していますが、上にはもう一つの特殊な「=」が見えます.この=上の64人の兄弟姉妹 に属していません. base 64符号化第1ステップは、3バイトごとに1つのグループに分けられ、24ビット のグループに分けられる.第2歩24位のうち6位の前を2つずつ0にすると32位になります(なぜ32位になるのですか?私は今まだ作者がどう思っているのか分かりませんが、当ててみてください.cpuの32位を集めるために) 残りは、2^6が64なので、2ステップ目に1バイトを用意すれば、各バイトを対応する文字に解析すればよい.上は3バイトの1組を言って、それでは3の倍数が足りないのはどうしますか?例えばgbkの「こんにちは」は4バイトで、欠けている2人の兄弟は「=」から頂点に上がったので、「=」は最後に1つか2つしか現れず、数えるのに使われています.なぜ?まだ あるとは知らなかった
urlEncodingは、標準的な符号化方法についていくつかの処理を行います.「+」と「/」が誤ってパラメータとしてurlアドレスバーに直接現れると、曖昧になります.その後、urlEncodingというものが後に現れ、彼は「/」を「」に変えました.「+」を「-」に置き換えるとurl符号化によって曖昧にならず、パラメータがパラメータであり、残りは「=」のみで問題があり、接尾辞を省略する解析方法もある.大体そうですが、いくつかのシーンで問題が発生する可能性があります.これは が出てきました.
まとめ
午後中、最後にbase 64に植えられたことに気づきました
package main
import (
"encoding/base64"
"fmt"
"io/ioutil"
"net/url"
"os"
)
func main() {
//
file, _ := os.Open("./images/pic")
data ,_ := ioutil.ReadAll(file)
defer file.Close()
a := base64.StdEncoding.EncodeToString(data)
fmt.Println(a)
fmt.Println(url.QueryEscape(a))
b:=base64.URLEncoding.EncodeToString(data)
fmt.Println(b)
fmt.Println(url.QueryEscape(b))
// stdEncoding, base64
// iVBORw0KGgoAAAANSUhEUgAAAC4AAAAZAQMAAAB0CI5hAAAABlBMVEX5+fkAAAApsJofAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAARklEQVQImWNgIBPwnz9/vKGBgYPBg8MRQjmBqA4GlwYG/ob+xo4GBgaHBicOIOXI4MJ/AER5MACVOHKAKPZG9v4DDSTbCgCwEhEB6ymwQwAAAABJRU5ErkJggg==
// url
// iVBORw0KGgoAAAANSUhEUgAAAC4AAAAZAQMAAAB0CI5hAAAABlBMVEX5%2BfkAAAApsJofAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAARklEQVQImWNgIBPwnz9%2FvKGBgYPBg8MRQjmBqA4GlwYG%2Fob%2Bxo4GBgaHBicOIOXI4MJ%2FAER5MACVOHKAKPZG9v4DDSTbCgCwEhEB6ymwQwAAAABJRU5ErkJggg%3D%3D
// urlEncoding, “ ”,
// iVBORw0KGgoAAAANSUhEUgAAAC4AAAAZAQMAAAB0CI5hAAAABlBMVEX5-fkAAAApsJofAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAARklEQVQImWNgIBPwnz9_vKGBgYPBg8MRQjmBqA4GlwYG_ob-xo4GBgaHBicOIOXI4MJ_AER5MACVOHKAKPZG9v4DDSTbCgCwEhEB6ymwQwAAAABJRU5ErkJggg==
//
// iVBORw0KGgoAAAANSUhEUgAAAC4AAAAZAQMAAAB0CI5hAAAABlBMVEX5-fkAAAApsJofAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAARklEQVQImWNgIBPwnz9_vKGBgYPBg8MRQjmBqA4GlwYG_ob-xo4GBgaHBicOIOXI4MJ_AER5MACVOHKAKPZG9v4DDSTbCgCwEhEB6ymwQwAAAABJRU5ErkJggg%3D%3D
}
大体説明します
Base64 ,
URL、Cookie、 。
まとめ
base64 , 64 ,
, ,
, , 。