微信訂閱號(hào)開發(fā)踩坑之編碼

?最近自己在開發(fā)微信訂閱號(hào),其中的一個(gè)功能是圖片文字識(shí)別。但是微信對(duì)返回的文字長(zhǎng)度是有限制的啦桌。新的微信開發(fā)文檔里我沒(méi)有找到長(zhǎng)度限制是多少,但是在以前的文檔里面規(guī)定的是長(zhǎng)度不超過(guò)2048字節(jié),注意是字節(jié)甫男,如果長(zhǎng)度超限且改,而后端有沒(méi)有做相應(yīng)處理,也沒(méi)有返回“success”字符串板驳,那么微信就會(huì)對(duì)用戶的請(qǐng)求響應(yīng)一個(gè)該公眾號(hào)暫時(shí)不能提供服務(wù)又跛。

? Java中使用String的getBytes().length可以方便地計(jì)算字符串所占字節(jié)數(shù)。

public static void main(String[] args) throws UnsupportedEncodingException {
        System.out.println("英俊\n23d".getBytes("ISO8859-1").length);//6
        System.out.println("英俊\n23d".getBytes("GB2312").length);//8
        System.out.println("英俊\n23d".getBytes("GBK").length);//8
        System.out.println("英俊\n23d".getBytes("UTF-8").length);//10
        System.out.println("英俊\n23d".getBytes().length);//10
}

?從上面的輸出可以看出采用ISO8859-1編碼方式時(shí)若治,一個(gè)中/英文都只占一個(gè)字節(jié)慨蓝;采用GB2312或GBK編碼方式時(shí),一個(gè)中文占兩個(gè)字節(jié)端幼;而采用UTF-8編碼方式時(shí)礼烈,一個(gè)中文占三個(gè)字節(jié)。而當(dāng)不指定編碼時(shí)婆跑,采用的就是操作系統(tǒng)的默認(rèn)編碼方式此熬,我的系統(tǒng)默認(rèn)編碼方式就是UTF-8。

?在向微信服務(wù)器返回消息時(shí)滑进,采用了UTF-8犀忱,因?yàn)槲覍⒄?qǐng)求和回復(fù)的編碼都設(shè)置成UTF-8防止亂碼,采用UTF-8編碼時(shí)扶关,文本消息內(nèi)容最多支持2047個(gè)字節(jié)峡碉,多一個(gè)都不給響應(yīng)。其實(shí)問(wèn)題并不在這里驮审,既然微信有文本消息長(zhǎng)度限制鲫寄,那么我識(shí)別出來(lái)的文字很長(zhǎng)怎么辦,我該怎么返回給用戶呢疯淫?我想到的解決方案是如果長(zhǎng)度超過(guò)2047個(gè)字節(jié)地来,那么我就將文字內(nèi)容寫入一個(gè)txt文件然后上傳到七牛云,用七牛云做對(duì)象存儲(chǔ)熙掺,上傳成功返回該txt文件的鏈接未斑,再刪除本地的txt,最后返回部分文字內(nèi)容和七牛云的鏈接給微信服務(wù)器币绩。

?愿景很美好蜡秽,也成功返回了,可是自己測(cè)試時(shí)發(fā)現(xiàn)缆镣,在微信端打開鏈接顯示的文字總是亂碼芽突,而且在Chrome亂碼在360極速瀏覽器又是好的,這就跟瀏覽器默認(rèn)的編碼方式有很大關(guān)系董瞻。我一開始以為跟微信那邊的文字編碼有關(guān)系寞蚌,然后試了將文本內(nèi)容的寫入用UTF-8田巴、ISO8859-1,結(jié)果都不行挟秤,真是令人頭疼壹哺。后來(lái)我仔細(xì)想了想,微信打開鏈接艘刚,應(yīng)該使用了微信的內(nèi)置瀏覽器管宵,然后在鏈接頁(yè)面往下拉,就會(huì)發(fā)現(xiàn)有段文字說(shuō)明攀甚,大概意思是QQ瀏覽器X5內(nèi)核提供支持箩朴。OK,QQ瀏覽器云稚,無(wú)奈手機(jī)上下了個(gè)QQ瀏覽器隧饼,然后試了試用QQ瀏覽器打開以GB2312編碼的文本,我丟静陈,竟然正常顯示...看來(lái)坑就在這里燕雁。果然,改成GB2312編碼后一切就正常了鲸拥。好吧拐格,QQ瀏覽器,世界清靜了刑赶。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末捏浊,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子撞叨,更是在濱河造成了極大的恐慌金踪,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,607評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件牵敷,死亡現(xiàn)場(chǎng)離奇詭異胡岔,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)枷餐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,239評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門靶瘸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人毛肋,你說(shuō)我怎么就攤上這事怨咪。” “怎么了润匙?”我有些...
    開封第一講書人閱讀 164,960評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵诗眨,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我趁桃,道長(zhǎng)辽话,這世上最難降的妖魔是什么肄鸽? 我笑而不...
    開封第一講書人閱讀 58,750評(píng)論 1 294
  • 正文 為了忘掉前任卫病,我火速辦了婚禮油啤,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘蟀苛。我一直安慰自己益咬,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,764評(píng)論 6 392
  • 文/花漫 我一把揭開白布帜平。 她就那樣靜靜地躺著幽告,像睡著了一般。 火紅的嫁衣襯著肌膚如雪裆甩。 梳的紋絲不亂的頭發(fā)上冗锁,一...
    開封第一講書人閱讀 51,604評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音嗤栓,去河邊找鬼冻河。 笑死,一個(gè)胖子當(dāng)著我的面吹牛茉帅,可吹牛的內(nèi)容都是我干的叨叙。 我是一名探鬼主播,決...
    沈念sama閱讀 40,347評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼堪澎,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼擂错!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起樱蛤,我...
    開封第一講書人閱讀 39,253評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤钮呀,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后昨凡,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體爽醋,經(jīng)...
    沈念sama閱讀 45,702評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,893評(píng)論 3 336
  • 正文 我和宋清朗相戀三年土匀,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了子房。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,015評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡就轧,死狀恐怖证杭,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情妒御,我是刑警寧澤解愤,帶...
    沈念sama閱讀 35,734評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站乎莉,受9級(jí)特大地震影響送讲,放射性物質(zhì)發(fā)生泄漏奸笤。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,352評(píng)論 3 330
  • 文/蒙蒙 一哼鬓、第九天 我趴在偏房一處隱蔽的房頂上張望监右。 院中可真熱鬧,春花似錦异希、人聲如沸健盒。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,934評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)扣癣。三九已至,卻和暖如春憨降,著一層夾襖步出監(jiān)牢的瞬間父虑,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,052評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工授药, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留士嚎,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,216評(píng)論 3 371
  • 正文 我出身青樓烁焙,卻偏偏與公主長(zhǎng)得像航邢,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子骄蝇,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,969評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 編碼問(wèn)題一直困擾著開發(fā)人員膳殷,尤其在 Java 中更加明顯,因?yàn)?Java 是跨平臺(tái)語(yǔ)言九火,不同平臺(tái)之間編碼之間的切換...
    x360閱讀 2,480評(píng)論 1 20
  • 為什么要編碼 不知道大家有沒(méi)有想過(guò)一個(gè)問(wèn)題赚窃,那就是為什么要編碼?我們能不能不編碼岔激?要回答這個(gè)問(wèn)題必須要回到計(jì)算機(jī)是...
    艾小天兒閱讀 17,318評(píng)論 0 2
  • 一勒极、姓名存儲(chǔ)和展現(xiàn) 1. 按學(xué)生總表編碼存儲(chǔ) 李洋薛鵬磊按照學(xué)生總表進(jìn)行編碼,并將編碼進(jìn)行存儲(chǔ)或者發(fā)送 左邊是客戶...
    果芽軟件閱讀 5,126評(píng)論 0 0
  • 今天盼盼盼讓我寫WIKI操作說(shuō)明文檔虑鼎,盼盼哥反饋了個(gè)問(wèn)題辱匿,說(shuō)圖片不清晰用原原始尺寸,我說(shuō)好的炫彩,其實(shí)我是想把每張圖片...
    打包愛(ài)_783f閱讀 136評(píng)論 0 0
  • 上善若水匾七,澤潤(rùn)萬(wàn)家 桐梓縣容光鎮(zhèn)安全飲水工程建設(shè):新建1000立方米/日集中式水處理廠一座,新建提水泵...
    阿洛啊閱讀 1,099評(píng)論 0 1