2013-11-01 58 views
1

我正在構建一個頁面來管理上傳到服務器的文件。處理德文字符

某些客戶已上傳文件名含有難懂德文字符的文件。 系統似乎無法正確讀取這些內容,雖然它與中文字符沒有問題!

FILENAME1:1--Referenz Frau Strauß.docx

什麼系統看到:1--Referenz Frau Strauß.docx

這裏是我的代碼:

protected void gvFiles_RowDeleting(object sender, EventArgs e) 
{ 
    Button btn = (Button)sender; 
    GridViewRow row = (GridViewRow)btn.NamingContainer; 

    TableCell cell = row.Cells[0]; 
    string fName = cell.Text; 
    cell = row.Cells[1]; 
    string owner = cell.Text; 
    if (owner == "-") 
    { 
     string filePath = ""; 
     filePath = getFilePath(); 
     string path = filePath + fName; 
     if (File.Exists(path)) 
     { 
      File.Delete(path); 
     } 
    } 
    postbackProc(); 
} 

領域的問題是cell.Text。它正確顯示在屏幕上,但沒有找到該文件。

我從服務器獲取文件名:

private void GetFilesFromDirectory(string DirPath) 
{ 
    try 
    { 
     DirectoryInfo Dir = new DirectoryInfo(DirPath); 
     //Label1.Visible = true; 
     lblPath.Visible = true; 
     lblPath.Text = DirPath; 
     FileInfo[] FileList = Dir.GetFiles("*.*", SearchOption.AllDirectories); 
     DataTable dt = new DataTable("File_List"); 
     DataRow dr; 
     int iRow = 0; 
     dt.Columns.Add("refFileName", typeof(String)); 
     dt.Columns.Add("Owner", typeof(String)); 
     foreach (FileInfo FI in FileList) 
      { 
       iRow++; 
       dr = dt.NewRow(); 
       dr["refFileName"] = FI.Name; 
       dr["Owner"] = getFileData(FI.Name); 
       dt.Rows.Add(dr);   
      } 
     gvFiles.DataSource = dt.DefaultView; 
     gvFiles.DataBind(); 
    } 
    catch (Exception ex) 
    { 
     throw ex; 
    } 
} 

任何解決方案?

+1

擺脫try/catch塊的。它只會搞亂你的堆棧跟蹤。 –

+1

我編輯了你的標題。請參閱:「[應該在其標題中包含」標籤「](http://meta.stackexchange.com/questions/19190/)」,其中的共識是「不,他們不應該」。 –

+0

這些不是_obscure_德語字符BTW ... – PMF

回答

1

我只能想象你有使用UTF-8

問題,請確保您所有的服務器端文件(的.aspx,的.ascx或.html,.cshtml ..等)都與(保存如,與編碼,UTF-8 ..with或無BOM)

還要檢查你的web.config正確處理UTF

<system.web> 
    <globalization requestEncoding="utf-8" responseEncoding="utf-8" responseHeaderEncoding="utf-8" fileEncoding="utf-8" /> 
</system.web> 
+0

將此行添加到web.config。它沒有任何區別。仍然讀錯了。我無法對文件名進行任何操作 - 文件已經存在! –

+0

這不能回答我的問題。換一種說法。字符串fName包含ß我希望它有ß。我如何轉換它? –

+0

它不應該包含ß ..這是html實體(htmlEncode/decode) – Robert