我从物理设备读取用户名。所有用户名都是带有西里尔符号的 Base64 编码字符串。不知何故,设备错误地将符号转换为 utf8,所以我尝试在客户端修复它,以在 GUI 中显示正确的用户名。
\n问题是部分用户名转换成功,但当我尝试这样做时,某些部分会引发异常。
\n这是我如何做到这一点的简化示例:
\nprocedure TForm3.Button1Click(Sender: TObject);\n\n function Convert(ABase64String : string) : string;\n begin\n var xWin1251 := TEncoding.GetEncoding(1251);\n try\n var DecodedStr : string := TNetEncoding.Base64String.Decode(ABase64String);\n var DecodedBytes := TEncoding.UTF8.GetBytes(DecodedStr);\n var ConvertedBytes := TEncoding.Convert(TEncoding.UTF8, xWin1251, DecodedBytes);\n\n Result := TEncoding.UTF8.GetString(ConvertedBytes);\n finally\n xWin1251.Free;\n end;\n end;\n\nconst\n s1 = '0KDRmtCg0ZHQodCD0KHQi9Cg0ZQg0KDRmtCg0ZHQoNGU0KDRldCgwrvQoMKwIA==';\n s2 = '0KDigJjQodGT0KDCttCg0ZHQoNCF0KHQitCh0IPQoNGU0KHigJMg0KDRmtCh4oCT0KE=';\nbegin\n ShowMessage(Convert(s1));\n ShowMessage(Convert(s2));\nend;\nRun Code Online (Sandbox Code Playgroud)\ns1- 转换得很好。
调试值:
\nDecodedStr '\xd0\xa0\xd1\x9a\xd0\xa0\xd1\x91\xd0\xa1\xd0\x83\xd0\xa1\xd0\x8b\xd0\xa0\xd1\x94 \xd0\xa0\xd1\x9a\xd0\xa0\xd1\x91\xd0\xa0\xd1\x94\xd0\xa0\xd1\x95\xd0\xa0\xc2\xbb\xd0\xa0\xc2\xb0 '\nDecodedBytes (208, 160, 209, 154, 208, 160, 209, 145, 208, 161, 208, 131, …Run Code Online (Sandbox Code Playgroud) 在base64中,如果要编码的字符不是AZ,az,+或/?
如果我想在base64中对URL进行编码,其中包含冒号(:),那么因为它不在base64索引中会发生什么.
究竟是什么输出(哪个characterset)以及如何将其转换为有意义的东西?
use Win32::API;
$EnumProcesses= new Win32::API( 'psapi', 'EnumProcesses','PNP');
$aBuffer = " " x 4096;
$bBuffer = " " x 4096;
$EnumProcesses->Call($aBuffer,4096,$bBuffer);
print $aBuffer,"\n",$bBuffer,"\n";
Run Code Online (Sandbox Code Playgroud) 我偶然偶然发现了一个网站,网址中有一个红色斑点.说真的,我从来没有见过这样的东西.那是怎么回事?!
http://blacklistdeclassified.net/2015/10/30/%F0%9F%94%B4-script-35-arioch-cain/
NB需要实际导航到页面才能看到它.以下是我系统(WinX,FF)的截图.红色的东西不是PhotoShopped.它实际上是红色的!
如何将以下代码从PHP转换为JavaScript?
$str = '';
for ($i = 0; $i < 256; $i++) {
$str .= chr($i);
}
Run Code Online (Sandbox Code Playgroud)
我知道String.fromCharCode(n)JavaScript中的代码类似于chr(n)PHP中的代码,但是当n大于127时,它们似乎返回不同的字符。
我strtolower()用来将字符串转换为小写.当在后面的代码这些字符串从转换UTF-8到ANSI (Windows的1252)使用iconv(),除非该函数将失败//IGNORE,使用语句.
我将这个令人讨厌的角色确定为小写的德国变形金刚 ü.但是,在ü使用之前,有一个大写字母Ü,它可以很好地转换.区别在于包含小写的字符串ü已使用创建strtolower().
为什么strtolower()给我带来不可逆转的结果或错误的编码?如何解决这个问题?
我正在 Java 程序中将 UTF-8 编码的文本文件读取为 UTF-16,只是为了看看会发生什么。我得到的输出字符串仅包含“?”。谁能解释一下 UTF-8 代码点如何转换为 UTF-16 以及为什么我只得到“?” 在我的输出中。
这是代码-
public class MyUTF {
public static void main(String[] args)
throws IOException, FileNotFoundException
{
InputStream is=new FileInputStream("file1.txt");
System.out.println(is.available());
InputStreamReader isr=new InputStreamReader(is,"UTF-16");
BufferedReader br=new BufferedReader(isr);
System.out.println(br.readLine());
}
}
Run Code Online (Sandbox Code Playgroud)
如果文件包含“a”,那么我会得到“?” 作为输出。如果它包含“abc”,那么我会得到“??”。
请解释一下从 UTF-8 到 UTF-16 的转换。
提前致谢。
main() {
char c1='a' , c2='A';
int i=c2-c1;
printf("%d", i);
}
Run Code Online (Sandbox Code Playgroud)
这段代码的输出是什么。请解释一下为什么?我知道答案是 -32 但有人可以解释为什么它是 -32 吗?