Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 替换字符串中的奇怪或特殊字符_Excel_Vba_Character Encoding_Vb6 - Fatal编程技术网

Excel 替换字符串中的奇怪或特殊字符

Excel 替换字符串中的奇怪或特殊字符,excel,vba,character-encoding,vb6,Excel,Vba,Character Encoding,Vb6,我正在尝试将Excel文件转换为SQL查询。我的问题是在给我的文件中有特殊字符。我无法替换它们CTRL+H,因为它们根本不显示在Excel文件中。当我编写查询(utf8或ANSI)时,它们会显示出来。使用Ultra Edit,它们显示为十六进制C2 92。使用utf8中的Notepad++时,它们显示为PU2。在ANSI中,它们显示为'。我怀疑这是撇号。顺便说一下,这是一份法国文件 到目前为止,我试图把它放在一个字符串中并进行这些操作,但没有任何效果 Dim Line as String Li

我正在尝试将Excel文件转换为SQL查询。我的问题是在给我的文件中有特殊字符。我无法替换它们CTRL+H,因为它们根本不显示在Excel文件中。当我编写查询(utf8或ANSI)时,它们会显示出来。使用Ultra Edit,它们显示为十六进制C2 92。使用utf8中的Notepad++时,它们显示为PU2。在ANSI中,它们显示为'。我怀疑这是撇号。顺便说一下,这是一份法国文件

到目前为止,我试图把它放在一个字符串中并进行这些操作,但没有任何效果

Dim Line as String

Line = Wb.Worksheets(1).Cells(LineNo, ColNo)

Line = Replace(Line, "Â’", "''")
Line = Replace(Line, "’", "''")
Line = Replace(Line, "Â", "''")
Line = Replace(Line, Chr(194) & Chr(146), "''") 'decimal value of C2 92
Line = Replace(Line, Chr(146) & Chr(194), "''") 'inverted decimal value of C2 92

谢谢

不要试图消除各种垃圾角色,而要专注于只保留好的角色。假设我们知道有效字符是大写和小写字母、数字和下划线。此代码将只保留好的代码:

Public Function KeepOnlyGood(s As String) As String
    Dim CH As String, L As Long, i As Long
    KeepOnlyGood = ""
    L = Len(s)
        For i = 1 To L
        CH = Mid(s, i, 1)
        If CH Like "[0-9a-zA-Z]" Or CH = "_" Then
            KeepOnlyGood = KeepOnlyGood & CH
        End If
    Next i
End Function


如果您想用空格替换垃圾邮件,可以修改代码以实现此目的。

数据库中的数据是如何编码的?如果替换SQL中的“特殊”字符会导致问题吗?
似乎是ChrW(8192)。您有一个Unicode字符“PRIVATE USE TWO”,我不知道这是否对您有帮助,但更多信息可以在这里找到:您能否共享Excel文件的示例,以及它在SQL中的外观?如果其他人不必猜测起点和终点是什么样的,那么他们就更容易帮助别人。这些“不可见字符”在SQL中有什么用途(Excel中不需要)?这个“奇怪的”Excel源文件来自哪里?另一个应用程序?我敢打赌@Jeeped实际上并没有记住那个Unicode ID。我敢打赌,如果我们用谷歌搜索,我们一定能找到他是怎么知道的