gpt4 book ai didi

java - String.java 在编译期间出现错误 "Cannot resolve symbol"

转载 作者:太空宇宙 更新时间:2023-11-04 12:25:30 25 4
gpt4 key购买 nike

当我使用 ISO-8859-1 字符集解密消息时遇到问题。我有一个加密和解密的类。这是代码:

public class AES64 {

public static String encrypt(String key, String ivs, String value) {
try {
IvParameterSpec iv = new IvParameterSpec(ivs.getBytes("ISO-8859-1"));

SecretKeySpec skeySpec = new SecretKeySpec(key.getBytes("ISO-8859-1"),
"AES");
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5PADDING");
cipher.init(Cipher.ENCRYPT_MODE, skeySpec, iv);
byte[] encrypted = cipher.doFinal(value.getBytes("ISO-8859-1"));
String r = Base64.getEncoder().encodeToString(encrypted);
return r;
} catch (Exception ex) {
ex.printStackTrace();
}
return null;
}

public static String decrypt(String key, String ivs, String encrypted) {
try {
IvParameterSpec iv = new IvParameterSpec(ivs.getBytes("ISO-8859-1"));

SecretKeySpec skeySpec = new SecretKeySpec(key.getBytes("ISO-8859-1"),
"AES");
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5PADDING");
cipher.init(Cipher.DECRYPT_MODE, skeySpec, iv);
byte[] original = cipher.doFinal(Base64.getDecoder().decode(encrypted.getBytes("ISO-8859-1")));

return new String(original);

} catch (Exception ex) {
ex.printStackTrace();
Log.d("ERRORE",ex.toString());
}
return null;
}
}

当我解密字符串并使用该方法时

getBytes("ISO-8859-1")

字符串不包含 à 字符,而是包含 ? 字符。因此,我转到 getBytes 定义,并且在文件 String.java 中存在许多错误。方法如下:

public byte[] getBytes(String charsetName) throws UnsupportedEncodingException {
return getBytes(Charset.forNameUEE(charsetName));
}

这是错误:

Cannot resolve symbol fonNameUEE()

我的 Gradle 文件是:

apply plugin: 'com.android.application'

android {
compileSdkVersion 23
buildToolsVersion '23.0.3'

defaultConfig {
applicationId "com.fd.ts"
minSdkVersion 14
targetSdkVersion 16
}

buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
}
}

dependencies {
compile 'com.android.support:support-v4:23.4.0'
compile 'com.google.android.gms:play-services:9.2.0'
compile 'com.google.code.ksoap2-android:ksoap2-android:3.6.0'
compile 'com.github.PhilJay:MPAndroidChart:v2.2.5'
compile 'com.viewpagerindicator:library:2.4.1@aar'
compile 'com.google.android.gms:play-services-ads:9.2.0'
compile 'com.google.android.gms:play-services-auth:9.2.0'
compile 'com.google.android.gms:play-services-gcm:9.2.0'

}

PS:Android studio中的String.java无法导入libcore.utils.CharSetUtils;

最佳答案

尝试使用

return getBytes(Charset.forName(charsetName));

而不是

return getBytes(Charset.forNameUEE(charsetName));

在 Android 版本的 Java 中,Charset 类似乎没有方法 forNameUEE(),您是否从其他非 Android 项目中获取了该方法?

<小时/>

编辑:

由于该方法似乎已编译且无法访问,请尝试使用

ivs.getBytes(Charset.forName("ISO-8859-1"));
key.getBytes(Charset.forName("ISO-8859-1"));

而不是传递 Charset 名称 :-) 您可能希望获取此 Charset 对象一次并重用它以进行优化,但首先尝试这样 :-D

关于java - String.java 在编译期间出现错误 "Cannot resolve symbol",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38440511/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com