壓縮新BUG
Ⅰ 今天發現c#在做字元串壓縮的時候的一個bug
NO,NO,事實上默認的Default是指你的操作系統當前所使用的編碼類型,在中國一般來說是UTF-8
如果你要指定的話可以用Encoding.UTF-8
但是解壓的時候也要用同一種編碼形式,否則就會出錯。。。
補充:剛剛收到你的信息了,你把字元串壓縮之後,卻又用Encoding.GetString方法來得到字元串,我想錯就錯在這一步,你應該直接把它(也就是所得到的位元組數組)以二進制的形式寫進文件文件的後綴你可以自定義一個也沒問題,然後讀取的時候再從文件中讀取出來。
簡單地說就是把兩個 CompressString2String,DecompressString2String兩個函數修改一下:
注釋:按鈕一為壓縮(把textBox1中的文本進行壓縮然後寫入date.dt文件)
按鈕一為壓縮(把date.dt文件的數據讀出來進行解壓縮並且顯示在textBox2中)
static void Compress(Stream source, Stream dest)
{
using (GZipStream zipStream = new GZipStream(dest, CompressionMode.Compress, true))
{
byte[] buf = new byte[1024];
int len;
while ((len = source.Read(buf, 0, buf.Length)) > 0)
zipStream.Write(buf, 0, len);
}
}
static void Decompress(Stream source, Stream dest)
{
using (GZipStream zipStream = new GZipStream(source, CompressionMode.Decompress, true))
{
byte[] buf = new byte[1024];
int len;
while ((len = zipStream.Read(buf, 0, buf.Length)) > 0)
dest.Write(buf, 0, len);
}
}
public static bool CompressString2String(string strSource)
{
using (MemoryStream msSrc = new MemoryStream(Encoding.UTF8.GetBytes(strSource)))
using (MemoryStream msTgt = new MemoryStream())
{
Compress(msSrc, msTgt);
File.WriteAllBytes(Application.StartupPath+"data.dt",msTgt.ToArray());
}
return true;
}
public static string DecompressString2String()
{
using (MemoryStream msSrc = new MemoryStream(File.ReadAllBytes(Application.StartupPath + "data.dt")))
using (MemoryStream msTgt = new MemoryStream())
{
Decompress(msSrc, msTgt);
return Encoding.UTF8.GetString(msTgt.ToArray());
}
}
private void button1_Click(object sender, EventArgs e)
{
MessageBox.Show(CompressString2String(textBox1.Text).ToString()+"Success!");
}
private void button2_Click(object sender, EventArgs e)
{
textBox2.Text = DecompressString2String();
}
再補充:
我想問一下,你要實現的是字元串加密?還是用於網路發送?
如果你是想把一個字元串轉化為另一種形式,讓別人看不懂,那就用加密技術,如果,是想實現將字元發送到遠程,也可以把我說的文件流改寫為網路流,但是你說的字元串轉換,我實在不明白?
要知道,字元串本身是由位元組數組組成,當你加壓之後,它本身的順序就會被打亂,而你UTF-8的字元集是有限的(不是任意的位元組組合都可以被認為是字元的),
簡單地說就是像你那樣做,你把加壓後的位元組數組(經過壓縮演算法轉換後的二進制數據)再轉化為字元串,就會造成數據丟失的情況,於是操作也就不會成功了。
Ⅱ 為什麼我所有的7Z文件都是解壓錯誤的
出錯原因:
1、復制粘貼文件遺漏。
2、下載不完整無法,進行解壓。
3、磁碟空間不足。
4、解壓縮7z本身出現bug。
解決辦法:
1、重新下載要解壓的內容。
2、重新下載加壓縮7z。
3、如果都不行,還可以試試其他解壓啊軟體。
Ⅲ lol亞索bug怎麼卡的,只是想知道
在泉水裡一直q對面收到你q的傷害,多玩盒子裡面有這個視頻,你要是想看,可以去找找
Ⅳ 解壓縮7Z文件出現錯誤
出錯原因:
1、復制粘貼文件遺漏。
2、下載不完整無法,進行解壓。
3、磁碟空間不足。
4、解壓縮7z本身出現BUG。
解決辦法:
1、重新下載要解壓的內容。
2、重新下載加壓縮7z。
3、如果都不行,還可以試試其他解壓啊軟體。
Ⅳ 壓縮出什麼bug了
「由於游戲中出現的一個Bug會導致Yasuo使用Last Breath(國服譯名:狂風絕息斬)技能後會將敵方英雄無限定身,我們決定在我們修復這一Bug之前暫時讓Yasuo下線,對大家造成的不便深表歉意。」
在《英雄聯盟》中,Last Breath是Yasuo的大招,能夠對一個被擊飛的敵方英雄沖去,造成200/300/400(+1.5)物理傷害,並使范圍內的所有被擊飛的敵人在空中多停留1秒。同時重置斷鋼閃的旋風烈斬(Flow)層數。
目前,Riot還沒有確認Yasuo重新上線的時間
Ⅵ 用WINRAR解壓大的文件怎麼卡住了
親,出現此問題
大部分原因是電腦內存較小
或壓縮出現老版本出現的一個BUG.建議
安裝最新版的WINRAR後試試
並適當增加下內存。
Ⅶ 在壓縮包裡面打開的文件進行修改保存以後文件沒有了
摘要 如果是直接雙擊打開了zip文件裡面的文檔,然後編輯,再直接保存,那實際上是保存到了臨時文件,在關閉文件後,壓縮軟體會提醒是否要更新壓縮文件,如果選擇不更新,那這個修改後的臨時文件就被丟棄,壓縮包也不更新,更改就都沒有了。
Ⅷ 壓縮文件打開就會閃屏
這可能是由於你的系統出現問題。。或者是你的電腦中了病毒。解決方法,一般來說你可以裝一個正版的殺毒軟體。或者試著卸載掉你的壓縮工具。重新在網站上找一個比較穩定的壓縮工具。如果這都不行。那就試著讓自己的電腦重新煥發光彩。重裝一次。如果你的是品牌電腦。把自己的電腦安裝好系統過後,裝上基本的裝機軟體。做一個備份。(參考:一般的品牌電腦都有一鍵恢復。裝好一鍵恢復過後就能做備份了。清華同方熱鍵為CTRL+/。聯想為F2。)如果是組裝的就直接做一個GHOST備份。
Ⅸ 壓縮文件winrar的bug
這個問題,應該是臨時文件夾中有相同的文件。一般是在C:\Windows\Temp目錄下。你可以查看一下。