java “错误:编码GBK 的不可映射字符”

java “错误:编码GBK 的不可映射字符”

F:\java\socket>javac   
GreetServer.java GreetServer.java:22: 错误: 编码GBK的不可映射字符
System.out.println("杩滅▼涓绘満鍦板潃锛?" + server.getRemoteSocketA
ddress());
                                          ^
1 个错误

原因是使用的编码方式不对,应该用ANSI编码方式。
解决
记事本打开java源文件,另存为选择ANSI编码。
例如:用Notepad++打开源码,点击格式选择以ANSI编码方式
ps:类名应该与文件名相同,不然可能会出现以下问题:

F:\java\socket>javac GreetServer.java
GreetServer.java:4: 错误: 类GreetingServer是公共的, 应在名为 GreetingServer.java
 的文件中声明
public class GreetingServer extends Thread
       ^
1 个错误

编码gbk不可映射字符,需要class或interface

03-26

package com.chrkey.bean;rnrnimport java.sql.*;rnimport java.io.Serializable;rnimport javax.sql.DataSource;rnrnpublic class SqlConn implements Serializable rn private String url = "jdbc:mysql://localhost:3306/einfo";rn private String user = "root"; // 数据库用户名rn private String password = "12345678";rnrn private Connection conn = null; // 数据库连接对象rn private Statement stmt = null; // 数据库连接状态对象rn private ResultSet rs = null; // 数据库查询结果集rnrn public SqlConn() //使用JDBC建立数据库连接rn try rn Class.forName("com.mysql.jdbc.Driver"); //括号里边为驱动程序名rnrn catch (java.lang.ClassNotFoundException e) rn System.err.println("SqlConn():" + e.getMessage());rn rn rnrn public ResultSet executeQuery(String sql) rn try rn conn = DriverManager.getConnection(url, user, password); // 获得数据库连接rn stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,rn ResultSet.CONCUR_READ_ONLY); // 建立Statement对象rn rs = stmt.executeQuery(sql);rn catch (SQLException ex) rn System.err.println("SqlConn.executeQuery:" + ex.getMessage());rn rn return rs;rn rnrn public void executeUpdate(String sql) rn try rn conn = DriverManager.getConnection(url, user, password);rn stmt = conn.createStatement();rn stmt.executeUpdate(sql);rn stmt.close();rn conn.close();rn catch (SQLException ex) rn System.err.println("SqlConn.executeUpdate: " + ex.getMessage());rn rn rnrn public void closeStmt() rn try rn stmt.close();rn catch (SQLException e) rn e.printStackTrace();rn rn rnrn public void closeConn() rn try rn conn.close();rn catch (SQLException e) rn e.printStackTrace();rn rn rnrn代码就是上面的,那位可以给个解决方案吗?错误是:警告如题,错误是1,3,4,5行需要class或interface.

求助,编译时出现“警告:编码 GBK不可映射字符”,怎么办?

07-22

在网上搜了下,说是在javac -encoding UTF-8 *.java就Ok了。但是我加上后,又出现“非法字符”的错误。求教是怎么回事,怎么解决?rn代码:rn[code=Java]rnimport java.util.Arrays;rnrnpublic class Num2Rmbrnrn private String[] hanArr = "零","壹","贰","叁","肆","伍","陆","柒","捌","玖";rn private String[] unitArr = "拾","佰","仟";rnrn /**rn * 把一个浮点数分解成整数部分和小数部分字符串rn * @param num需要被分解的浮点数rn * @return分解出来的整数部分和小数部分。第一个数组元素是整数部分,第二个数组元素是小数部分rn */rn private String[] divide(double num)rn rn //将一个浮点数强制类型转换为long,即得到它的整数部分rn long zheng = (long)num;rn //浮点数减去整数部分,得到小数部分,小数部分乘以100后再取整得到两位小数rn long xiao = Math.round((num - zheng)*100);rn return new String[]zheng + "",String.valueOf(xiao);rn rn /**rn * 把一个四位的数字字符串变成汉字字符串rn * @param numStr 需要被转换的四位的数字字符串rn * @return 四位的数字字符串被转换成的汉字字符串rn */rn private String toHanStr(String numStr)rn rn String result = "";rn int numLen = numStr.length();rn //依次遍历数字字符串的每一位数字rn for(int i = 0;i < numLen;i ++ )rn rn //把char型数字转换成的int型数字,因为它们的ASCII码值恰好相差48rn //因此把char型数字减去48得到int型数字,例如'4'被转换成4.rn int num = numStr.charAt(i) - 48;rn //如果不是最后一位数字,而且数字不是零,则需要添加单位(仟、佰、拾)rn if(i != numLen - 1 && num != 0)rn rn result += hanArr[num] + unitArr[numLen - 2 - i];rn rn //否则不要添加单位rn elsern rn result += hanArr[num];rn rn rn return result;rnrn rnpublic static void main(String[] args)rnrn Num2Rmb nr = new Num2Rmb();rn //测试把一个浮点数分解成整数部分和小数部分rn System.out.println(Arrays.toString(nr.divide(236711125.123)));rn //测试把一个四位的数字字符串变成汉字字符串rn System.out.println(nr.toHanStr("6109"));rn rn rn[/code]

关于警告的神奇:编码 GBK不可映射字符 JCreator编译问题

08-23

我用JCreator写了一个小servlet程序: 程序如下:rnrnrn//登陆成功rnpackage com.mayi;rnrnimport javax.servlet.http.*;rnimport java.io.*;rnimport java.sql.*;rnrnpublic class Wel extends HttpServletrn //处理请求rn //重写doGet() doPost();rn rn rn public void doGet(HttpServletRequest req,HttpServletResponse res)rn tryrn Connection ct=null;rn Statement sm=null;rn ResultSet rs=null;rn //解决中文乱码rn res.setContentType("text/html;charset=gb2312");rn rn PrintWriter pw= res.getWriter();rn rn rn pw.println("");rn rn //得到Sessionrn HttpSession hs=req.getSession(true);rn String id=hs.getId();rn String val=(String)hs.getAttribute("pass");rn String name=(String)hs.getAttribute("name");rn rn if(val==null)rn res.sendRedirect("login");rn rn rn //接收Logincl传递的用户名rn String u=req.getParameter("uname");rn String p=req.getParameter("upass");rn rn pw.println(" Welcome to servlet!");rn rn rn ///加载图片rn pw.println(" ");rn ///显示ID 和 名称 密码rn pw.println("你的名字是:"+u+" 你的密码是:"+p+" ");rn pw.println(" 这个Session的ID是:"+id+" 名字是: "+name);rn rn rn ///-------分页功能--------rn int pageSize=3; ///每一页显示多少个rn int pageNow=1; ///显示第几页rn int pageCount=1; ///总共有多少页rn int rowCount=0; ///总共有多少个rn int num=0;rn rn rn ///获得第几页rn String number=req.getParameter("number");rn System.out.println(number);rn if(number==null)rn //第一次登陆rn elsern rn pageNow=Integer.parseInt(number);rn num=pageSize*(pageNow-1);rn rn rn rn rn ///链接数据库rn //获得链接rn Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");rn ct=DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=mayi","sa","123");rn sm=ct.createStatement();rn rs=sm.executeQuery("select count(*) from users ");rn rn ///计算rowCount pageCountrn if(rs.next())rn rowCount=rs.getInt(1);rn rn rn rn if(rowCount%pageSize==0)rn pageCount=rowCount/pageSize;rn elsern pageCount=rowCount/pageSize+1;rn rn rn rs=sm.executeQuery("select top 3 * from users where userId not in(select top "+num+" userId from users) ");rn rn ///建立信息表rn rn rn pw.println(" 查询结果");rn pw.println(" Id name passwd email grade");rn while(rs.next())rn pw.println(" ");rn pw.println(" "+rs.getInt("userId")+""); rn pw.println(" "+rs.getString("username")+"");rn pw.println(" "+rs.getString("passwd")+""); rn pw.println(" "+rs.getString("email")+""); rn pw.println(" "+rs.getInt("grade")+""); rn pw.println("");rn rn pw.println("");rn rn rn ////上一页rn pw.println("上一页");////链接地址 web 为servlet中的URL地址!?rn rn ///第几页链接rn for (int i =pageNow; i"+i+"");////链接地址 web 为servlet中的URL地址!!rn rn rn ///下一页rn pw.println("下一页");////链接地址 web 为servlet中的URL地址!?rn rn rn ///做个超链接rn pw.println(" 返回重新登陆");rn rn pw.println("");rn catch(Exception ce)rn ce.printStackTrace();rn rn rn rn public void doPost(HttpServletRequest req,HttpServletResponse res)rn rn this.doGet(req,res);rn rn rn rnrnrnrnrn警告:编码 GBK 的不可映射字符rnrn我就按照网上的方法 : rn 修改后为:-encoding UTF-8 -classpath "$[ClassPath]" -d "$[OutputPath]" $[ModJavaFiles]rnrnrn再编译一下 发现更多的错误!!我很是郁闷!! 就[color=#FF0000]又改回原来的默认值[/color]为:-classpath "$[ClassPath]" -d "$[OutputPath]" $[ModJavaFiles]rnrnrn[color=#FF0000]最后我用eclipse把源代码整理了一下[/color] 就是使代码整洁一点 你懂的! rnrn 它居然编译通过了???rn 我不信 [color=#FF0000]用Ctrl+Z回到原来的状态 [/color] 在编译 还是没问题!!! [color=#FF0000]神奇了 刚刚死都编译不过 现在倒好 怎么都能编译的过了!![/color]rnrn不知哪位大侠能告诉小弟一声我 这是为什么啊!! 好让我长点经验!!!rnrnrnrnrn

没有更多推荐了,返回首页

私密
私密原因:
请选择设置私密原因
  • 广告
  • 抄袭
  • 版权
  • 政治
  • 色情
  • 无意义
  • 其他
其他原因:
120
出错啦
系统繁忙,请稍后再试