??xml version="1.0" encoding="utf-8" standalone="yes"?> import java.io.UnsupportedEncodingException; public class TempClass { /** if (rs.next()) { String rsname = rs.getString("vcword"); // String name = new String(rsname.getBytes("GBK"), "GBK"); // String name = new String(rsname.getBytes("GBK"), "UTF-8"); // String name = new String(rsname.getBytes("GBK"), // String name = new String(rsname.getBytes(), "GBK"); System.out.println(rsname); st_mysql.setString(1, name); st_mysql.close(); } catch (ClassNotFoundException e) { } #7B7D62 #56B6E9 #4B8D32
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
* @param args
* @throws UnsupportedEncodingException
* @throws ClassNotFoundException
* @throws SQLException
*/
public static void main(String[] args) throws UnsupportedEncodingException {
String url = "jdbc:microsoft:sqlserver://localhost:1433;databaseName=tran";
try {
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
Connection conn = DriverManager.getConnection(url, "sa", "sa");
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery("select vcword from cn_other");
// mysql
String url_mysql = "jdbc:mysql://127.0.0.1:3306/zwspace";
Class.forName("org.gjt.mm.mysql.Driver");
Connection conn_mysql = DriverManager.getConnection(url_mysql,
"root", "root");
PreparedStatement st_mysql = conn_mysql
.prepareStatement("insert into chds_cihui(name) values(?)");
// String name = new String(rsname.getBytes("GB2312"),
// "GB2312");
// String name = new String(rsname.getBytes("UTF-8"), "GB2312");
// String name = new String(rsname.getBytes("utf8"), "GB2312");
// String name = new String(rsname.getBytes("iso-8859-1"),
// "GB2312");
// String name = new String(rsname.getBytes("GBK"), "GB2312");
// String name = new String(rsname.getBytes("GB2312"), "GBK");
// String name = new String(rsname.getBytes("UTF-8"), "GBK");
// String name = new String(rsname.getBytes("iso-8859-1"),
// "GBK");
// String name = new String(rsname.getBytes("GB2312"), "UTF-8");
// String name = new String(rsname.getBytes("UTF-8"), "UTF-8");
// String name = new String(rsname.getBytes("iso-8859-1"),
// "UTF-8");
// "iso-8859-1");
// String name = new String(rsname.getBytes("GB2312"),
// "iso-8859-1");
// String name = new String(rsname.getBytes("UTF-8"),
// "iso-8859-1");
// String name = new String(rsname.getBytes("iso-8859-1"),
// "iso-8859-1");
// String name = new String(rsname.getBytes(), "GB2312");
// String name = new String(rsname.getBytes(), "UTF-8");
// String name = new String(rsname.getBytes(), "iso-8859-1");
String name = rsname;
st_mysql.executeUpdate();
}
rs.close();
st.close();
conn.close();
conn_mysql.close();
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
试过以上的所有编码都无法解决数据在MYSQL中的q问题,看来是jdbcqmysql时的~码不对,于是
?nbsp; String url_mysql="jdbc:mysql://127.0.0.1:3306/zwspace";后加上编?br />
String url_mysql="jdbc:mysql://127.0.0.1:3306/zwspace?useUnicode=true&characterEncoding=utf8";l于OK?br />
]]>
Exception executing batch: org.hibernate.StaleStateException: Batch update returned unexpected row count from update: 0 actual row count: 0 expected: 1
因ؓ(f)q个临时c?已经有一个id=0 (long的默认?;q时hibernate 为错认ؓ(f)q是一条持久化c?从而进行更新操?故报?!
q时把持久类的id cdҎ(gu)Long O(jin)K?再create ?临时cȝid为null ,hibernate 才会(x)正确的判断这是(f)时类而进行save操作!!
]]>
user.setNickname(new String(pu.getName().getBytes("ISO8859_1"),"GB2312"));
userService.createUser(user);
String(byte[] bytes, int offset, int length, String charsetName)
通过使用指定的字W集解码指定?byte 子数l,构造一个新?String
?nbsp;
byte[]
getBytes(String charsetName)
使用指定的字W集此 String
~码?byte 序列Qƈ结果存储到一个新?byte 数组?/td>
#800080
]]>
document.getElementById("zwsky_content").style.fontSize=size+'px'
}
function ReImgSize(){
for (j=0;j<document.images.length;j++)
{
if (document.images[j].src.indexOf("www.***.com/back") >0)
document.images[j].src=document.images[j].src.replace("www.***.com/back","back.****.com/back");
}
}
</script>
............................
<body bottommargin="0" leftmargin="0" rightmargin="0" topmargin="0" onload="ReImgSize()">
]]>
]]>
Ҏ(gu)为:(x)
package org.springframework.orm.hibernate3.support;
...
public void modifyByMerge(User user) {
Session session = getHibernateTemplate().getSessionFactory().
getCurrentSession();
session.clear();
session.update(user);
}
...
目用的是spring + hibernate所以得?/span>getHibernateTemplate().getSessionFactory().getCurrentSession();得当前Session
]]>
映射文g加了(jin)一个lazy="false" fetch="join" l果Q也出现?jin)数据重复取?br><many-to-one name="user" column="user_id" class="com.zwspace.domain.User" lazy="false" fetch="join" />
q样也会(x)有错吗!想不通,只能把它l删?jin)?br>
Java中文问题一直困扰着很多初学者,如果?jin)解了(jin)Javapȝ的中文问题原理,我们可以对中文问题能够采取Ҏ(gu)的解决之道?
最古老的解决Ҏ(gu)是用String的字节码转换Q这U方案问题是不方便,我们需要破坏对象封装性,q行字节码{换?/p> q有一U方式是对J2EE容器q行~码讄Q如果J2EE应用pȝq该容器,则会(x)发生qQ而且指定容器配置不符合J2EE应用和容器分ȝ原则?/p> 在Java内部q算中,涉及(qing)到的所有字W串都会(x)被{化ؓ(f)UTF-8~码来进行运。那么,在被Java转化之前Q字W串是什么样的字W集Q?nbsp;JavaLҎ(gu)操作pȝ的默认编码字W集来决定字W串的初始编码,而且Javapȝ的输入和输出的都是采取操作系l的默认~码?/p> 因此Q如果能l一Javapȝ的输入、输出和操作pȝ3者的~码字符集合Q将能够使Javapȝ正确处理和显C汉字。这是处理Javapȝ汉字的一个原则,但是在实际项目中Q能够正抓住和控制住Javapȝ的输入和输出部分是比较难的。J2EE中,׃涉及(qing)到外部浏览器和数据库{,所以中文问题ؕ码显得非常突出?/p> J2EE应用E序是运行在J2EE容器中。在q个pȝ中,输入途径有很多种Q一U是通过面表单打包成请求(requestQ发往服务器的Q第二种是通过数据库读入;q有W?U输入比较复杂,JSP在第一ơ运行时L被编译成ServletQJSP中常常包含中文字W,那么~译使用javacӞJava根据默认的操作pȝ~码作ؓ(f)初始~码。除非特别指定,如在Jbuilder/eclipse中可以指定默认的字符集?/p> 输出途径也有几种Q第一U是JSP面的输出。由于JSP面已经被编译成ServletQ那么在输出Ӟ也将Ҏ(gu)操作pȝ的默认编码来选择输出~码Q除非指定输出编码方式;q有输出途径是数据库Q将字符串输出到数据库?/p> 由此看来Q一个J2EEpȝ的输入输出是非常复杂Q而且是动态变化的Q而Java是跨q_q行的,在实际编译和q行中,都可能涉?qing)到不同的操作系l,如果ȝJava自由Ҏ(gu)操作pȝ来决定输入输出的~码字符集,q将不可控制地出Cؕ码?/p> 正是׃Java的跨q_Ҏ(gu),使得字符集问题必ȝ具体pȝ来统一解决Q所以在一个Java应用pȝ中,解决中文q的根本办法是明确指定整个应用pȝl一字符集?/strong> 指定l一字符集时Q到底是指定ISO8859_1 、GBKq是UTF-8呢? Q?Q如l一指定为ISO8859_1Q因为目前大多数软g都是西方人编制的Q他们默认的字符集就是ISO8859_1Q包括操作系lLinux和数据库MySQL{。这P如果指定Jivel一~码为ISO8859_1Q那么就有下?个环节必L握:(x) 开发和~译代码时指定字W集为ISO8859_1?/p> q行操作pȝ的默认编码必LISO8859_1Q如Linux?/p> 在JSP头部声明Q?lt;%@ page contentType="text/html;charset=ISO8859_1" %>?/p> Q?Q如果统一指定为GBK中文字符集,上述3个环节同样需要做刎ͼ不同的是只能q行在默认编码ؓ(f)GBK的操作系l,如中文Windows?/p> l一~码为ISO8859_1和GBK虽然带来~制代码的方便,但是各自只能在相应的操作pȝ上运行。但是也破坏?jin)Java跨^台运行的优越性,只在一定范围内行得通。例如,Z(jin)使得GBK~码在linux上运行,讄Linux~码为GBK?/p> 那么有没有一U除?jin)应用系l以外不需要进行Q何附加设|的中文~码Ҏ(gu)解决Ҏ(gu)呢? Java/J2EEpȝ的统一~码定义为UTF-8。UTF-8~码是一U兼Ҏ(gu)有语a的编码方式,惟一比较ȝ(ch)的就是要扑ֈ应用pȝ的所有出入口Q然后用UTF-8?#8220;l扎”它?/p> 一个J2EE应用pȝ需要做下列几步工作Q?/p>
|
import org.apache.axis.client.Service;
import javax.xml.rpc.ServiceException;
import java.net.MalformedURLException;
import org.apache.axis.client.Call;
import org.apache.axis.encoding.ser.BeanDeserializerFactory;
import javax.xml.namespace.QName;
import org.apache.axis.encoding.ser.BeanSerializerFactory;
import java.rmi.RemoteException;
public class ClientService {
public ClientService() {
}
public UserDTO getUserDTO() {
String endpoint = "http://localhost:8080/WebModule/services/Myservice";
QName qset = new QName("urn:Myservice", "UserDTO");
QName qmethod = new QName("urn:Myservice", "getUserDTO");
Class clsUserDTO = UserDTO.class;
UserDTO dto = new UserDTO();
Service service = new Service();
try {
Call call = (Call) service.createCall();
call.registerTypeMapping(clsUserDTO, qset,
new BeanSerializerFactory(clsUserDTO, qset),
new BeanDeserializerFactory(clsUserDTO,qset));
call.setTargetEndpointAddress(new java.net.URL(endpoint));
call.setOperationName(qmethod);
call.setReturnClass(clsUserDTO);
dto = (UserDTO) call.invoke(new Object[] {});
} catch (ServiceException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (RemoteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return dto;
}
public static void main(String[] args) {
ClientService cs = new ClientService();
UserDTO user = cs.getUserDTO();
System.out.println(user.getPassword());
System.out.println(user.getUsername());
}
}
UserDTO.java
package com.soft.client;
public class UserDTO {
private String username;
private String password;
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
}
//遍历HasMap
Boolean isoldvote=false;
Iterator it=oldvote.entrySet().iterator();
while(it.hasNext()){
Entry entry=(Entry) it.next();
Object key=entry.getKey();
Object value=entry.getValue();
if(key.equals(voteid)&&value.equals(ip)){
isoldvote=true;
break;
}
}
if (isoldvote) {
...............................