Как сохранить имя файла с китайскими символами в SQL Server - Varchar (100)?

У меня есть имя файла: 一個 例子.pdf

Я хочу сохранить имя файла в таблице SQL Server и прочитать его из таблицы SQL Server. Как ты это делаешь?

Это код:

class Bestand
{
 public void Add(string filePath, DateTime fileDate, string fileName = "")
 {
 Bestand bestand = this.CurrentBestand;

 if (filePath.Length > 0 && CanReadFile(filePath))
 {
 Binary bin = new Binary();
 bin.Data = new System.Data.Linq.Binary(File.ReadAllBytes(filePath));

 bestand.BestandsDatum = fileDate;
 bestand.BestandsNaam = String.IsNullOrEmpty(fileName) ? Path.GetFileName(filePath) : Encoding.UTF8.GetBytes(fileName)[0].ToString(); 

 bestand.Binary = bin;
 }
 }

 public void Save(string filePath)
 {
 byte[] buffer = Data.ToArray();
 System.IO.File.WriteAllBytes(filePath, buffer);
 }
…
}

и вызовите это, чтобы сохранить файл:

documents[0].Add(beFile.Value, dtpDate.Value);

и вызовите это, чтобы открыть файл:

public static void ViewBestand(IBestand bestand)
{
 string orgFilepath = Path.Combine(TempDocumentFolder, bestand.FileName);
 string filepath = orgFilepath;

 int tmpCounter = 0;
 while (File.Exists(filepath) && tmpCounter < 100)
 {
 tmpCounter++;
 filepath = Path.Combine(TempDocumentFolder, Path.GetFileNameWithoutExtension(orgFilepath) + "_" + tmpCounter.ToString() + Path.GetExtension(orgFilepath));
 }

 bestand.Save(filepath);
 ViewFile(filepath);
}
1 ответ

Измените тип столбца на nvarchar(100). varchar не может хранить символы Unicode, вызывать один байт, Unicode - двойной байт.

Больше вы можете прочитать здесь.

licensed under cc by-sa 3.0 with attribution.