Eclipse调试程序时出现注释显示乱码该怎么办

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Eclipse调试程序时出现注释显示乱码该怎么办相关的知识,希望对你有一定的参考价值。

1.第一个地方的编码格式为jsp文件的存储格式。Eclipse会根据这个编码格式保存文件。并编译jsp文件,包括里面的汉字。
  第二处编码为解码格式。因为存为UTF-8的文件被解码为iso8859-1,这样如有中文肯定出乱码。也就是必须一致。而第二处所在的这一行,可以没有。缺省也是使用iso8859-1的编码格式。所以如果没有这一行的话,“我是个好人”也会出现乱码。必须一致才可以。
 第三处编码为控制浏览器的解码方式。如果前面的解码都一致并且无误的话,这个编码格式没有关系。有的网页出现乱码,就是因为浏览器不能确定使用哪种编码格式。因为页面有时候会嵌入页面,导致浏览器混淆了编码格式。出现了乱码。
2.表单使用Post方式提交后接收到的乱码问题
这个问题也是一个常见的问题。这个乱码也是tomcat的内部编码格式iso8859-1在捣乱,也就是说post提交时,如果没有设置提交的编码格式,则会以iso8859-1方式进行提交,接受的jsp却以utf-8的方式接受。导致乱码。既然这样的原因,下面有几种解决方式,并比较。
A,接受参数时进行编码转换
String str = new String(request.getParameter("something").getBytes("ISO-8859-1"),"utf-
8") ; 这样的话,每一个参数都必须这样进行转码。很麻烦。但确实可以拿到汉字。
B,在请求页面上开始处,执行请求的编码代码, request.setCharacterEncoding("UTF-8"),把提交内容的字符集设为UTF-8。这样的话,接受此参数的页面就不必在转码了。直接使用  String str = request.getParameter("something");即可得到汉字参数。但每页都需要执行这句话。这个方法也就对post提交的有效果,对于get提交和上传文件时enctype="multipart/form-data"是无效的。稍后下面单独对这个两个的乱码情况再进行说明。
C,为了避免每页都要写request.setCharacterEncoding("UTF-8"),建议使用过滤器对所有jsp。

现在将常见的乱码问题分为JSP页面显示中文乱码、表单提交乱码两类。

  1)JSP页面中显示中文乱码

  在JSP文件中使用page命令指定响应结果的MIME类型,如<%@ page language="java"

contentType="text/html;charset=gb2312" %>

  2)表单提交乱码

  表单提交时(post和Get方法),使用request.getParameter方法得到乱码,这是因为tomcat处理提交
参考技术A 是编码格式不正确,修改一下编码格式:
1、找到工程中jar引用目录
2、选中jar文件,点击右键,打开buildpath
3、打开对话框中选中之前jar文件,展开选中source attachment节点,然后点击右侧Edit...
4、在对话框中,修改encoding,修改为utf-8点击确定,然后重新调试或者打开之前的类即可。因为不同source可能采用了不同的编码,这里的encoding没有选择为相同的编码所以才导致的乱码,一般情况下要么utf-8,要么gbk。即使不知道,选择为另一种编码试一试即可。

安装游戏和QQ时出现NSIS错误该怎么解决?

安装游戏和QQ时出现NSIS错误该怎么办?

NSIS (Nullsoft Scriptable Install System)是一个Open
Source的Windows系统下安装程序制作程序。它提供了安装、卸载、系统设置、文件解压缩等功能。这如其名字所指出的那样,NSIS是通过它的脚
本语言来描述安装程序的行为和逻辑的。NSIS的脚本语言和通常的编程语言有类似的结构和语法,但它是为安装程序这类应用所设计的。NSIS脚本通常以
nsi为扩展名,支持include功能,头文件扩展名为nsh。NSIS (Nullsoft Scriptable Install System)是一个Open Source的Windows系统下安装程序制作程序。它提供了安装、卸载、系统设置、文件解压缩等功能。这如其名字所指出的那样,NSIS是通过它的脚本语言来描述安装程序的行为和逻辑的。NSIS的脚本语言和通常的编程语言有类似的结构和语法,但它是为安装程序这类应用所设计的。NSIS脚本通常以 nsi为扩展名,支持include功能,头文件扩展名为nsh。
NSIS的主要特点是:

开销小,一个完整功能的安装程序仅需要34k的额外开销。
支持大多数Windows平台,包括:Windows 9.x,Windows NT, Windows 2000, Windows XP, Windows 2003
支持三大压缩算法: Zlig, BZips, LZMA
支持脚本
支持多语言
支持安装界面定制
提供可扩展的插件接口
支持网络安装、补丁
支持无人值守的安装模式
此外,NSIS的license允许任何用途免费使用。

开发一个NSIS的安装程序通常有以下几步:

确定安装的功能和界面元素
编写NSIS脚本
使用NSIS提供的makensis或者makensisw程序,将步骤2编写的脚本编译成可执行的安装程序
调试安装程序,如果有问题退到第二步重复
随着NSIS的流行,有一些第三方的NSIS脚本开发环境出现了,如HM NIS Edit,Venis IX前者是完全开源的,后者仅对个人和非商业用途免费。在这些集成开发环境下,步骤2,3可以方便的组合在一起。

NSIS脚本的结构
NSIS脚本(下称nsi脚本)主要包含安装程序属性、页面、区段、函数。
属性用来定义安装程序的行为和界面风格,这些属性大部分是编译时刻属性,即不能在运行时刻改变。
页面是指安装程序的向导页面,示例:
Page license
Page components
Page directory
Page instfiles
UninstPage uninstConfirm
UninstPage instfiles

区段是对应某种安装/卸载选项的处理逻辑,该段代码仅当用户选择相应的选项才被执行。卸载程序的区段名用"un."作为前缀,示例如下:
Section "Installer Section"
SectionEnd

Section "un.Uninstaller Section"
SectionEnd
在区段中可以使用很多指令用来完成诸如解压缩文件、读写注册表、创建目录、创建快捷方式等任务,但最常用的指令是SetOutPath和File,前者用于指定目的位置,后者用于指定文件。示例:
Section "My Program"
SetOutPath $INSTDIR
File "My Program.exe"
File "Readme.txt"
SectionEnd
区段名的修饰符/o表示该区段默认不选上,-表示隐藏区段(匿名区段也是隐藏区段),!表示需要粗体显示的区段。
SectionIn表示该区段和安装类型之间的关系:
SectionIn insttype_index [insttype_index] ... [RO]
RO修饰符表示不可修改。

子区段用于包含多个区段
SubSection [/e] Caption [subsection_name index output]
修饰符/e用于该子区段的所有区段是否默认展开。

函数包含了模块化的安装逻辑,在nsi脚本中函数分为两种:用户自定义函数和回调函数。用户自定义函数仅当是Call指令调用时才被执行,如果函数体中没有abort语句,则安装程序执行完了用户自定义函数,继续运行Call语句和指令。
用户自定义函数的语法如下:
Function <函数名>
# some commands
FunctionEnd
函数的调用则使用以下语法:
Call <函数名>
可见无论是函数的定义还是函数的调用都没有参数传递。通常nsi的参数传递是通过堆栈操作Pop,Push和20个寄存器变量~, $R0~$R9进行的。也可以通过全局变量完成参数传递。如:
Var input ;
Var output ;

Section bla
DeteailPrint "input is $input$\n"
Call square
DeteailPrint "square of $input is $output$\n"
SectionEnd

Function square
output = input^2
FunctionEnd

回调函数则是由在特定的时间点触发的程序段。常用的回调函数如.onInit:
Function .onInit
MessageBox MB_YESNO "This will install My Program. Do you wish to continue?" IDYES gogogo
Abort
gogogo:
FunctionEnd
NSIS对于安装逻辑定义以下回调函数:.onGUIInit、.onInit、.onInstFailed、.onInstSuccess、. onGUIEnd、.onMouseOverSection、.onRebootFailed、.onSelChange、.onUserAbort、. onVerifyInstDir
NSIS对于卸载逻辑定义以下回调函数:un.onGUIInit、un.onInit、un.onUninstFailed、un.onUninstSuccess、un.onGUIEnd、un.onRebootFailed、un.onUserAbort

nsi脚本的变量定义
nsi脚本的变量定义用Var关键字,后跟变量名,变量是全局的并且是大小写敏感的。变量引用时需要加上前缀$。
除了用户自定义的变量外,nsi脚本中与定义寄存器变量~,$R0~$R9用于参数传递,以及系统变量用于特定用途,这些变量主要有:
$INSTDIR,$OUTDIR,$CMDLINE,$LANGUAGE这些变量都是可写的。
$PROGRAMFILES,$COMMONFILES,$DESKTOP,$EXEDIR,$,$WINDIR,$SYSDIR,$ TEMP,$STARTMENU,$SMPROGRAMS,$SMSTARTUP,$QUICKLAUNCH,$DOCUMENTS,$SENDTO,$ RECENT,$F***ORITES,$MUSIC,$PICTURES,$VIDEOS,$NETHOOD,$FONTS,$TEMPLATES,$ APPDATA,$PRINTHOOD,$INTERNET_CACHE,$COOKIES,$HISTORY,$PROFILE,$ ADMINTOOLS,$RESOURCES,$RESOURCES_LOCALIZED,$CDBURN_AREA,$HWNDPARENT,$ PLUGINSDIR

nsi脚本中可用于调试的系统函数有MessageBoxes,DetailPrint,Dumpstate。

nsi脚本的编译器指令
nsi脚本的编译器指令主要指仅在编译时刻执行的命令。这些命令主要用来包含文件、条件化编译、定义常量、定义宏等。定义常量和宏是编译器指令最主要应用。
定义常量的示例:
!define VERSION "1.0.3"
Name "My Program $"
OutFile "My Program Installer - $.exe"

定义宏的示例:
!macro MyFunc UN
Function $MyFunc
Call $DoRegStuff
ReadRegStr HKLM Software\MyProgram key
DetailPrint
FunctionEnd

Modern UI
Modern UI是感观上模仿最新的Windows系统的界面风格,它由欢迎页面、结束页面和其他向导页面构成。

插件
nsi支持插件,通过插件可以方便的扩展NSIS安装程序的功能。NSIS插件是用C++,Delphi等语言编写的dll,在nsi脚本中调用nsi中的函数使用如下语法:
DLLName::FunctionName "参数1" "参数2" "参数3"
示例1:
nsExec::ExecToLog '"$\makensis.exe" /CMDHELP'
执行makensis.exe命令,显示该命令用法。
示例2:
InstallOptions::dialog "$PLUGINSDIR\test.ini"
显示对话框
示例3:
NSISdl::download http://download.nullsoft.com/winamp/client/winamp291_lite.exe $R0
下载文件
NSIS搜索插件的策略
默认情况下NSIS在其安装目录的子目录Plugins中搜索插件,用户可以使用!addplugindir指定增加插件的目录位置。

nsi脚本的基本语法
注释
单行注释用井号"#"或分号";",跨行注释用可以用c/C++中注释语法。

数据类型
数字
数字常量可以用十进制、十六进制(0x为前缀)、八进制(0为前缀)表示,颜色用类似html的中RGB表示法,但去井号"#"。
字符串
字符串常量可以用引号引用,转意字符用"$\"作前缀。美元符号、常用转意字符换行、回车、制表符的nsi语法表示分别为:$$,$\n,$\r,$\t
续行符
nsi脚本用行尾的反斜杠"\"表示下一行和当前行逻辑上是同一行
默认头文件
如果在makensis同目录下有nsisconf.nsh文件,该文件会被自动包含,除非编译时指定/NOCONFIG选项

标号
nsi使用GOTO语句和IfErrors, MessageBox, IfFileExists及StrCmp进行程序控制流表示,标号是这些语句的目标语句。标号定义的语法:
标号:语句
标号必须定义在函数和区段中,其作用范围仅限于定义它的区段或函数。以点号"."开头的标号是全局标号。
相对跳转
nsi脚本常常使用相对跳转表示条件分枝,其语法是[+-][1-9],加号表示从当前位置往前跳转,减号则表示从当前位置往后跳转。数字表示跳转的语句条数。示例:
Goto +4
MessageBox MB_OK "The following message will be skipped"
Goto +3
MessageBox MB_OK "You will never ever see this message box"
Goto -3
MessageBox MB_OK "Done"

页面
向导页面是NSIS安装程序中最重要的界面元素,在nsi脚本中可以使用NSIS内置页面或者定制界面,通过脚本可以指定页面的顺序、显示样子和行为。 Page指令用来定义安装程序中的页面,UninstPage用来定义,此外PageEx指令提供类是功能,但提供更多选项。页面的顺序和它在nsi脚本中出现的次序一致。
示例:
Page license
Page components
Page directory
Page instfiles
UninstPage uninstConfirm
UninstPage instfiles
规定安装程序首先显示license页面,然后显示components选择页面,接着显示安装目录选择页面。

页面选项
不同的页面有不同的选项:
License page有LicenseText,LicenseData,LicenseForceSelection;
Components selection页面有ComponentText;
Directory selection页面有DirText,DirVar(仅能在PageEx中使用),DirVerify;
Un/Installation log页面有DetailsButtonText,CompletedText;
Uninstall confirmation页面有DirVar(仅能在PageEx中使用),UninstallText
对于内置的Page,NSIS支持三个回调函数用于定制界面和验证,对于自定义页面NSIS支持两个回调函数。

Page指令语法
Page license|components|directory|instfiles|uninstConfirm) [pre_function] [show_function] [leave_function]
或者:
Page custom [creator_function] [leave_function] [caption]
示例:
Page license skipLicense "" stayInLicense
Page custom customPage "" ": custom page"
Page instfiles

Function skipLicense
MessageBox MB_YESNO "Do you want to skip the license page?" IDNO no
Abort
no:
FunctionEnd

Function stayInLicense
MessageBox MB_YESNO "Do you want to stay in the license page?" IDNO no
Abort
no:
FunctionEnd

Function customPage
GetTempFileName $R0
File /oname=$R0 customPage.ini
InstallOptions::dialog $R0
Pop $R1
StrCmp $R1 "cancel" done
StrCmp $R1 "back" done
StrCmp $R1 "success" done
error: MessageBox MB_OK|MB_ICONSTOP "InstallOptions error:$\r$\n$R1"
done:
FunctionEnd

UninstPage指令语法
UninstPage custom [creator_function] [leave_function] [caption]
OR
UninstPage (license|components|directory|instfiles|uninstConfirm) [pre_function] [show_function] [leave_function]

PageEx语法
PageEx使用嵌套结构,比如:
PageEx license
LicenseText "Readme"
LicenseData readme.rtf
PageCallbacks licensePre licenseShow licenseLeave
PageExEnd

常用的nsi指令
nsi大致可以分为基本指令、注册表及ini操作指令、通用指令、流程控制指令、文件操作指令、卸载指令、字符串处理指令、多语言支持指令、重启指令。

以下是常用的基本指令:
Delete
Delete [/REBOOTOK] file

Exec
Exec command

ExecShell
ExecShell action command [parameters] [SW_SHOWNORMAL | SW_SHOWMAXIMIZED | SW_SHOWMINIMIZED | SW_HIDE]ExecShell "open" 示例"http://nsis.sf.net/"
ExecWait
ExecWait command [user_var(exit code)]
示例:
ExecWait '"$INSTDIR\someprogram.exe"'
ExecWait '"$INSTDIR\someprogram.exe"'
DetailPrint "some program returned "

File
File [/nonfatal] [/a] ([/r] [/x file|wildcard [...]] (file|wildcard) [...] | /oname=file.dat infile.dat)
/r选项用作递归模式,/x用于排出文件
示例:
File something.exe
File /a something.exe
File *.exe
File /r *.dat
File /r data
File /oname=$TEMP\temp.dat somefile.ext
File /nonfatal "a file that might not exist"
File /r /x CVS myproject
File /r /x *.res /x *.obj /x *.pch source

Rename
Rename [/REBOOTOK] source_file dest_file

RMDir
RMDir [/r] [/REBOOTOK] directory_name

NSIS 2.35 中文版 增加了4 个新插件。内置 VNISEdit 最新中文版,带 2.14 版的中文帮助,非常方便。
参考技术A 病毒名称:
未知(暂以NSIS病毒命名,因为感染最显著症状是双击EXE文件会弹出为NSIS Error对话框)

病毒症状与表现:
1.部分或全部安装程序无法安装,点击时弹出NSIS Error对话框;
2.部分或全部应用程序无法使用,提示:已经被破坏或者内存错误等对话框;
3.无法安装或使用的程序均无法删除提示硬盘写保护或正在使用字样,即使重起也无法删除;
4.格c盘重装系统无效,问题依然存在;

我的解决办法:
推荐杀毒软件NOD32,可以彻底解决该病毒,具体办法:
1.用一个干净的U盘或移动硬盘拷贝一份NOD32,安装到中毒系统;
2.无须升级最新病毒库,用NOD32进行全盘查杀;
3.将NOD32的病毒操作设为删除和隔离;
4.全盘杀完后即可上网,可以将NOD32升级到最新病毒库,进行全部查杀,主要目的是杀掉其他病毒;
5.重启重装系统,先将C盘格式化,可以选择dos下格盘,进行GHOST恢复比较节省时间;
6.重装系统后,安装NOD32将全部分区再次进行深层扫描,可以将病毒基本清除;
7.注意:nod32扫描完后,要将所有EXE安装程序删除,重新下载安装,以防重复感染;
参考技术B NSIS
(Nullsoft
Scriptable
Install
System)是一个Open
Source的Windows系统下安装程序制作程序。它提供了安装、卸载、系统设置、文件解压缩等功能。这如其名字所指出的那样,NSIS是通过它的脚
本语言来描述安装程序的行为和逻辑的。NSIS的脚本语言和通常的编程语言有类似的结构和语法,但它是为安装程序这类应用所设计的。NSIS脚本通常以
nsi为扩展名,支持include功能,头文件扩展名为nsh。NSIS
(Nullsoft
Scriptable
Install
System)是一个Open
Source的Windows系统下安装程序制作程序。它提供了安装、卸载、系统设置、文件解压缩等功能。这如其名字所指出的那样,NSIS是通过它的脚本语言来描述安装程序的行为和逻辑的。NSIS的脚本语言和通常的编程语言有类似的结构和语法,但它是为安装程序这类应用所设计的。NSIS脚本通常以
nsi为扩展名,支持include功能,头文件扩展名为nsh。
NSIS的主要特点是:
开销小,一个完整功能的安装程序仅需要34k的额外开销。
支持大多数Windows平台,包括:Windows
9.x,Windows
NT,
Windows
2000,
Windows
XP,
Windows
2003
支持三大压缩算法:
Zlig,
BZips,
LZMA
支持脚本
支持多语言
支持安装界面定制
提供可扩展的插件接口
支持网络安装、补丁
支持无人值守的安装模式
此外,NSIS的license允许任何用途免费使用。
开发一个NSIS的安装程序通常有以下几步:
确定安装的功能和界面元素
编写NSIS脚本
使用NSIS提供的makensis或者makensisw程序,将步骤2编写的脚本编译成可执行的安装程序
调试安装程序,如果有问题退到第二步重复
随着NSIS的流行,有一些第三方的NSIS脚本开发环境出现了,如HM
NIS
Edit,Venis
IX前者是完全开源的,后者仅对个人和非商业用途免费。在这些集成开发环境下,步骤2,3可以方便的组合在一起。
NSIS脚本的结构
NSIS脚本(下称nsi脚本)主要包含安装程序属性、页面、区段、函数。
属性用来定义安装程序的行为和界面风格,这些属性大部分是编译时刻属性,即不能在运行时刻改变。
页面是指安装程序的向导页面,示例:
Page
license
Page
components
Page
directory
Page
instfiles
UninstPage
uninstConfirm
UninstPage
instfiles
区段是对应某种安装/卸载选项的处理逻辑,该段代码仅当用户选择相应的选项才被执行。卸载程序的区段名用"un."作为前缀,示例如下:
Section
"Installer
Section"
SectionEnd
Section
"un.Uninstaller
Section"
SectionEnd
在区段中可以使用很多指令用来完成诸如解压缩文件、读写注册表、创建目录、创建快捷方式等任务,但最常用的指令是SetOutPath和File,前者用于指定目的位置,后者用于指定文件。示例:
Section
"My
Program"
SetOutPath
$INSTDIR
File
"My
Program.exe"
File
"Readme.txt"
SectionEnd
区段名的修饰符/o表示该区段默认不选上,-表示隐藏区段(匿名区段也是隐藏区段),!表示需要粗体显示的区段。
SectionIn表示该区段和安装类型之间的关系:
SectionIn
insttype_index
[insttype_index]
...
[RO]
RO修饰符表示不可修改。
子区段用于包含多个区段
SubSection
[/e]
Caption
[subsection_name
index
output]
修饰符/e用于该子区段的所有区段是否默认展开。
函数包含了模块化的安装逻辑,在

以上是关于Eclipse调试程序时出现注释显示乱码该怎么办的主要内容,如果未能解决你的问题,请参考以下文章

如何解决Eclipse调试程序时乱码问题

SSH远程连接Linux时出现中文乱码

pdf转换成PPt时出现乱码,比如说就是那些希腊字母显示不出来等,该怎么办?

Hive 表注释显示乱码问题,GC 方式

尝试使用 Eclipse/OpenOCD 进行调试时出现“程序文件不存在”

eclipse 中文乱码问题