1.为什么我的java源代码是乱码?
2.请问这种JS代码怎么加密
为什么我的java源代码是乱码?
这是Java文件的编码导致的问题,通常使用javacFirstSample.java编译UTF-8编码的.java源文件。没有指定编码参数encoding的情况下,默认使用的是GBK编码当编译器用GBK编码来编译UTF-8文件时,就会把UTF-8编码文件的3个字节的文件头,按照GBK中汉字占2字节、java 源码排序英文占1字节的特性解码成了“乱码”的两个汉字。这个源文件应该是用记事本另存为UTF-8编码造成的。
解决方法:
对于非GBK及其子集编码(GB)的源文件,编译方式为javac-encodingUTF-8FirstSample.java。但还是会出现错误,提示非法字节。
这是因为.java只识别不带BOM的UTF-8编码。所以应该用EmEditor、Editplus、能源码头游戏ULtraEdit或notepad++之类的工具另存为UTF-8(无BOM)。然后就可以用javac.java编译.java文件了。
/iknow-pic.cdn.bcebos.com/7e3ecdcffcf5dcdbaabba"target="_blank"title=""class="ikqb_img_alink">/iknow-pic.cdn.bcebos.com/7e3ecdcffcf5dcdbaabba?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_%2Ch_%2Climit_1%2Fquality%2Cq_%2Fformat%2Cf_auto"esrc="/7e3ecdcffcf5dcdbaabba"/>
扩展资料:
语言特点:
1.简单性
Java看起来设计得很像C++,但是为了使语言小和容易熟悉,设计者们把C++语言中许多可用的特征去掉了,这些特征是一般程序员很少使用的。例如,蓝天发卡网源码Java不支持goto语句,代之以提供break和continue语句以及异常处理。
2.面向对象
Java是一个面向对象的语言。对程序员来说,这意味着要注意应中的数据和操纵数据的方法(method),而不是严格地用过程来思考。Java还包括一个类的封神ol的源码扩展集合,分别组成各种程序包(Package),用户可以在自己的程序中使用。
3.分布性
Java设计成支持在网络上应用,它是分布式语言。Java既支持各种层次的网络连接,又以Socket类支持可靠的流(stream)网络连接,所以用户可以产生分布式的防疫物资管理源码客户机和服务器。
4.编译和解释性
Java编译程序生成字节码(byte-code),而不是通常的机器码。Java字节码提供对体系结构中性的目标文件格式,代码设计成可有效地传送程序到多个平台。Java程序可以在任何实现了Java解释程序和运行系统(run-timesystem)的系统上运行。
5.稳健性
Java原来是用作编写消费类家用电子产品软件的语言,所以它是被设计成写高可靠和稳健软件的。Java消除了某些编程错误,使得用它写可靠软件相当容易。
参考资料:
/blog.csdn.net/shengzhu1/article/details/"target="_blank"title="CSDN:Java解释执行">CSDN:Java解释执行
请问这种JS代码怎么加密
这不算加密,只不过一眼看不出来罢了。其实就是JavaScript字符串转义。原理很简单,比如字符 ’w‘
它的 charCode 是 十六进制表示为 0x
然后利用 JavaScript 字符串转义前缀 \x,表达出编码过的 ASCII 字符来:
\x + charCode的十六进制表示(两位)所以字符串 '\x' 就是字符串 'w'
也就是说
'\x' === 'w'这个的返回值是 true,二者完全等效!
这是对于 ascii 代码表示形式,charCode 大于 的怎么处理?就要用到 \u 前缀了
\u + charCode的十六进制表示(比如汉字 '学' 的 charCode 是 (0x5b)
书写时只要把 0x 替换为 \u:
\u5b这样就可以了。
'\u5b' === '学'那么为什么要这么麻烦呢?直接输入字符不就好了吗?要知道,有些字符是不能打印或不能被输入的(比如功能/控制字符“退格”等),如果要在字符串中包含这些字符,只能依靠字符串转义了!
回头看楼主给的代码:
"\x\x6f\x\x\x6d\x\x6e\x"这个是什么?
F开浏览器开发者工具,切到控制台(或者你有 node.js),在控制台输入这一串。
你看到输出什么了吗?
"document"继续
"\x\x\x\x\x\x6c\x6e"这个输入后,控制台返回
"writeln"剩下括号内的也是一样的啦。结果是一个指向特定地址的 <a> 标签。
所以翻译过来就是
window['document']['writeln']('<a href="...">标签</a>')看懂了?
好,既然楼主说要怎么加密的。我就写了个 JS 脚本,只要调用这个方法,你就得到“加密”后的字符串信息了:
function encrypt(str) {var result = '', charCode
for(var i = 0, length = str.length; i < length; i++) {
charCode = str.charCodeAt(i)
if(charCode < 0x) {
result += '\\x0' + charCode.toString()
} else if(charCode < 0x) {
result += '\\x' + charCode.toString()
} else if(charCode < 0x) {
result += '\\u0' + charCode.toString()
}else {
result += '\\u' + charCode.toString()
}
}
return result
}
在控制台执行
encrpty('楼主给的那一串')返回
"\x3c\x\x\x\x\x\x\x3d\x\x\x\x\x\x3a\x2f\x2f\x\x\x\x2e\x\x\x\x6d\x6b\x2e\x\x6f\x6d\x2f\x\x\x\x\x\x\x\x\x3d\x\x5f\x\x6c\x\x6e\x6b\x\x\x\x\x\x6c\x\x3d\x\x\x6f\x6c\x6f\x\x3a\x\x\x\x\x\x\x\x3b\x\x3e\x3c\x\x3e\x\x\u6e\u\u8bba\ub\x3c\x2f\x\x3e\x3c\x2f\x\x3e"楼主只要把括号中的那一串替换为上面输入的内容就好了。