Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.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
VB应用程序Java程序生成的文件的编码问题_Java_Vb.net_Encryption_Encoding_Notepad++ - Fatal编程技术网

VB应用程序Java程序生成的文件的编码问题

VB应用程序Java程序生成的文件的编码问题,java,vb.net,encryption,encoding,notepad++,Java,Vb.net,Encryption,Encoding,Notepad++,我有一个小小的Java加密程序,它读取csv并生成一个加密的csv文件上传到VB应用程序,但解密后的VB应用程序无法正确显示字符 我用Notepad++打开文件,并用Notepad++将其转换为UTF-8,VB应用程序能够解密并显示所有正确的字符。 然后我继续修改代码,使用UTF-8读取csv中的行,但我没有工作。我尝试读取文件并将其转换为字节,然后使用UTF-8编码创建一个新字符串,但也没有成功。为什么当我使用notepad++转换为UTF-8时它能工作,而当我试图在代码中转换UTF-8时却不

我有一个小小的Java加密程序,它读取csv并生成一个加密的csv文件上传到VB应用程序,但解密后的VB应用程序无法正确显示字符

我用Notepad++打开文件,并用Notepad++将其转换为UTF-8,VB应用程序能够解密并显示所有正确的字符。 然后我继续修改代码,使用UTF-8读取csv中的行,但我没有工作。我尝试读取文件并将其转换为字节,然后使用UTF-8编码创建一个新字符串,但也没有成功。为什么当我使用notepad++转换为UTF-8时它能工作,而当我试图在代码中转换UTF-8时却不能工作

VB函数

//each line from the encrypted file is processed by this VB RC4 function
Private Function RC4(ByVal Str As String, ByVal Pwd As String) As String

    Dim strReturnValue As String = ""
    Dim Sbox(0 To 255) As Integer
    Dim A, B, c
    Dim Key() As Byte, ByteArray() As Byte, Tmp As Byte

    If Len(Pwd) = 0 Or Len(Str) = 0 Then GoTo Exit_Function
    If Len(Pwd) > 256 Then
      Key = System.Text.Encoding.Default.GetBytes(Microsoft.VisualBasic.Left(Pwd, 256)) ''StrConv(Left$(Pwd, 256), vbFromUnicode)
    Else
      Key = System.Text.Encoding.Default.GetBytes(Pwd)  ''StrConv(Pwd, vbFromUnicode)
    End If

    For A = 0 To 255
      Sbox(A) = A
    Next A
    A = 0 : B = 0 : c = 0
    For A = 0 To 255
      B = (B + Sbox(A) + Key(A Mod Len(Pwd))) Mod 256
      Tmp = Sbox(A)
      Sbox(A) = Sbox(B)
      Sbox(B) = Tmp
    Next A
    A = 0 : B = 0 : c = 0
    ByteArray = System.Text.Encoding.Default.GetBytes(Str) '' StrConv(Str, vbFromUnicode)
    For A = 0 To Len(Str) - 1
      B = (B + 1) Mod 256
      c = (c + Sbox(B)) Mod 256
      Tmp = Sbox(B)
      Sbox(B) = Sbox(c)
      Sbox(c) = Tmp
      ByteArray(A) = ByteArray(A) Xor (Sbox((Sbox(B) + Sbox(c)) Mod 256))
    Next A
    strReturnValue = System.Text.Encoding.Default.GetString(ByteArray)  ''StrConv(ByteArray, vbUnicode)
Exit_Function:
    Return strReturnValue
  End Function
爪哇

//处理输入文件中的行并写入文件
尝试
{
FileOutputStream fos=newFileOutputStream(“stackOverFlow\\EncryptedFile.csv”,true);
byte[]encrypt=EncryptFile.RC4(line.getBytes(),pwd);
fos.写入(加密);
fos.close();
}
捕获(异常e1)
{
e1.printStackTrace();
}

在反编译VB应用程序并阅读下面的帖子后,我找到了一个解决方案:

我改变了读者声明的方式

作为StreamReader的Dim reader


Dim reader作为新的StreamReader(filetoimport.Text,Encoding.Default)

在反编译VB应用程序并阅读下面的文章后,我找到了一个解决方案:

我改变了读者声明的方式

作为StreamReader的Dim reader


将读卡器变暗为新的StreamReader(filetoimport.Text,Encoding.Default)

删除出错时的行
,然后继续下一步操作
。这会阻止计算机告诉您是否有问题。我有,但没有错误。删除错误时的
行,然后继续下一步
。它阻止计算机告诉你是否有问题。我有,但没有错误。