asp上傳文件亂碼
⑴ ASP 提交資料庫時變成亂碼怎麼解決
提交的時候把數據的編碼弄正確來!跟資料庫里的編碼一致,例如 UTF-8 把編碼統一起來就可以了~!
⑵ 關於用asp無組件上傳文件遇到的問題,求助!!!
asp上傳文件以二進制方式存儲在資料庫中,應該是沒有問題的,但問題是打開上傳文件根據文件類型不同打開的方式是不一樣的,txt文件可以用文本方式打開,但word文件必須使用word軟體打開,不能使用文本方式打開。因此在存儲時必須有文件的擴展名,根據擴展名不同使用不同的打開方式。
⑶ asp.net 上傳文件時文件名稱中文亂碼問題
string path = @"C:/Documents and Settings/Administrator/桌面/新建 文本文檔.txt"; //文件物理路徑
int fcount = 0;
string contenttype = "";
string filename = "";
FileInfo fi = new FileInfo(path); //獲取文件信息
fcount = (int)fi.Length;
contenttype = fi.Extension;
filename = fi.FullName.Substring(fi.FullName.LastIndexOf('//') + 1, fi.FullName.LastIndexOf('.') - fi.FullName.LastIndexOf('//') - 1);
FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read);//讀取文件
BinaryReader br = new BinaryReader(fs);
byte[] photo = br.ReadBytes(fcount);
br.Close();
fs.Close();
Session["test"] = photo; //將文件二進制保存到Session中
byte[] by = (byte[])Session["test"]; //獲取session信息
filename = setting.ToHexString(filename);//為了防止中文的亂碼,對其進行轉碼。
Response.AddHeader("Content-Disposition", "attachment; filename=" + filename + contenttype + "");//設置讀取的文件頭
Response.AddHeader("Content-Length", by.Length.ToString());
Response.ContentType = "application/octet-stream"; //設置輸出類型 這里可以保存在資料庫中 動態實現類型
Response.OutputStream.Write(by, 0, by.Length); //輸出
Response.Flush();
Response.End();
//ToHexString方法防止亂碼
/// <summary>
/// 為字元串中的非英文字元編碼
/// </summary>
/// <param name="s"></param>
/// <returns></returns>
public static string ToHexString(string s)
{
char[] chars = s.ToCharArray();
StringBuilder builder = new StringBuilder();
for (int index = 0; index < chars.Length; index++)
{
bool needToEncode = NeedToEncode(chars[index]);
if (needToEncode)
{
string encodedString = ToHexString(chars[index]);
builder.Append(encodedString);
}
else
{
builder.Append(chars[index]);
}
}
return builder.ToString();
}
/// <summary>
///指定 一個字元是否應該被編碼
/// </summary>
/// <param name="chr"></param>
/// <returns></returns>
private static bool NeedToEncode(char chr)
{
string reservedChars = "$-_.+!*'(),@=&";
if (chr > 127)
return true;
if (char.IsLetterOrDigit(chr) || reservedChars.IndexOf(chr) >= 0)
return false;
return true;
}
/// <summary>
/// 為非英文字元串編碼
/// </summary>
/// <param name="chr"></param>
/// <returns></returns>
private static string ToHexString(char chr)
{
UTF8Encoding utf8 = new UTF8Encoding();
byte[] encodedBytes = utf8.GetBytes(chr.ToString());
StringBuilder builder = new StringBuilder();
for (int index = 0; index < encodedBytes.Length; index++)
{
builder.AppendFormat("%{0}", Convert.ToString(encodedBytes[index], 16));
}
return builder.ToString();
}
⑷ asp圖片上傳時候,一點擊上傳按鈕就顯示亂碼了,求救啊
應該是你的編碼沒設置對,要設置三個地方,以GB2312為例:
代碼裡面:
html部分:<meta
http-equiv="Content-Type"
content="text/html;
charset=gb2312"
/>
asp部分(寫在最頂上):<%@LANGUAGE="VBSCRIPT"
CODEPAGE="936"%>
還有一個最重要的,經常被忽略,就是文件的編碼
用記事本打開這個文件,然後選另存為...
在編碼裡面選擇ANSI
,再保存一下。
然後關閉瀏覽器,重新打開這個文件。
以上三步,asp亂碼的問題基本上都可以解決
⑸ ASP無組件上傳後顯示亂碼
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>這個去掉,再看一下你其它網頁文件的編碼是不是gb2312 ,還有就是如果你的文件原來是UTF-8的話,直接改成2312也會亂碼,需要新建一個2312的頁面,把代碼復制進去
⑹ ASp from傳值出現亂碼
asp使用無組件上傳,第一首先在確認提交的頁面和接收文件的程序所用的編碼相同,如同時使用gb2312或同時使用utf-8,提交文件的頁使用meta使用gb2312時,接收頁的頭加入%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%;提交文件的頁使用meta使用utf-8時,接收頁的頭就要加%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%,不然接收中文文件名時肯定會亂碼(不加入這句就算你在你自己本機測試通過,但在其他伺服器上不一定正常)! 第二,在接收文件頁的上傳類中查找Server.CreateObject ("ADODB.Stream") ,在它的下面所有XXXX.CharSet = "語言編碼" 改為你的頁面編碼,如gb2312或utf-8等,這個在地方一般會出現兩次,總之出現這樣的語句替換就是了(其中XXXX是創建的對象名,各種上傳組件的名稱都不同)! 做好以上兩點應該就可以正常接收中文文件名了!不行你再來找我!