function TranslateDBFile(Str: string): String;
var 
  tmp: UTF8String; 
  l: Integer; 
  l_WideString: PWideChar; 
  l_Length: Integer; 
begin 
    l_Length := Length(Str) * 2; 
    GetMem(l_WideString, l_Length);
    StringToWideChar(Str, l_WideString, l_Length);
    Result := Utf8Encode(l_WideString);
    GetMem(l_WideString, 0);
end; procedure TForm1.FormCreate(Sender: TObject);
begin
 ASQLite3DB1.Database := TranslateDBFile('F:\Sample1我(oneTTtable)\')+'data.s3db';
 //这里转换完后,我 变成了乱码,不知道什么原因,
 ASQLite3Table1.Open;
end;

解决方案 »

  1.   

    function TranslateDBFile(Str: String ): String;
    var
      tmp: UTF8String;
      l: Integer;
      l_WideString: PWideChar;
      l_Length: Integer;
    begin
        //l_Length := Length(Str) * 2;
        //GetMem(l_WideString, l_Length);
        //l_WideString := StringToWideChar(Str, l_WideString, l_Length);    Result := Utf8Encode(WideString(Str));
        //GetMem(l_WideString, 0);
    end;
    改成这样也不行啊,还是乱码
      

  2.   

      
      ASQLite3DB1.Database := AnsiToUTF8(TranslateDBFile('F:\Sample1我(oneTTtable)\')+'data.s3db');
      

  3.   

    用中文的话,需要先把中文路径变成UTF-8编码
    然后再看看,以前遇到过,但是弄成UTF-8编码后就好了,貌似
      

  4.   

    ASQLite3DB1.Database := AnsiToUTF8('F:\Sample1我(oneTTtable)\');
    这个也是乱码
      

  5.   

    ASQLite3DB1.Database := AnsiToUTF8('F:\Sample1我(oneTTtable)\'); 
    这个也是乱码F:\Sample1鎴?oneTTtable)\data.s3db
      

  6.   

      SqliteDB.DriverDLL := ExtractFilePath(ParamStr(0)) + 'sqlite3.dll';
      SqliteDB.Database := AnsiToUTF8(ExtractFilePath(ParamStr(0)) + 'LogiOA');你搞复杂了吧 
      

  7.   

    我以前就是用的UTF-8编码就OK嘛!
    回去帮你找找代码
      

  8.   

    调试时候你看到的就是乱码 别钻牛角啦  你要的是sqlite数据库可以连接
      

  9.   

    SqliteDB.DriverDLL := ExtractFilePath(ParamStr(0)) + 'sqlite3.dll'; 
      SqliteDB.Database := AnsiToUTF8(ExtractFilePath(ParamStr(0)) + 'LogiOA'); 
    这种方式我也试了,不行
      

  10.   

    谁把这段变成utf8编码,我试试。
    我变成:F:\Sample1我(oneTTtable)\data.s3db 这个编码后,还是不行
      

  11.   

    已经搞定了!Sqlite 2007 的一个版本;characterEncode = UTF8 即可
    transactiontype = 缺省即可不用 进行编码转换。直接中文路径即可。
    谢谢大家
      

  12.   

    你用的asqlite 控件不能支持加密啊。zeoslib 6.6.2 以上的控件都支持加密功能,当然需要一个能加密的sqlite.dll ,网上可以找到的。
    zeoslib 6.6.2 以上的可以直接使用中文路径。
    我用的sqlite+zeoslib控件 来读取utf8 编码的数据库,原因是ansi对模糊查询 like 支持的不好。带来的问题就是直接使用GRID显示和编辑数据总是乱码。  zqry1.SQL.Text:=Utf8encode('select * from area  where area like ''%人'''); 只有grid里出错,其他都可以用utf8encode utf8decode 显式转换。因为其他控件里单字段单记录的,而grid控件确实多行多记录的,如果能在grid控件里对显示和保存每一字段值都作下类似的转换,我想应该可以实现吧。 sqlite expert professional 和橙子的工具  都同时支持utf8 和ansi。 
    既然 sqlite expert professional 能显示出来 UTF8 的数据表。不知道它里面用的是不是dbgrid 反正是个表格形式的。我想dbgrid通过类似于 utf8encode utf8decode 的方式也可以实现吧。 所以肯定有办法解决“使用UTF8就不能直接使用GRID编辑数据” 的问题。 
    期待各位高手的出现。