精华内容
下载资源
问答
  • 韩文字体库,包括一些常用的韩文字体.做韩文网站必备
  • 130种非常好看实用的韩文字体,本人找遍各种网站挑选后收集的最常用的韩文字体
  • ps中gulim字体

    2015-05-03 13:53:46
    ps中的常用的韩文字体,身份证号码字体,可提供给需要的同学使用,来源自网络
  • 如题,解决网页显示韩文不能的问题~ 包含batang gulim dotum等最常用的字体 绝对本人亲自整理,强烈推荐!
  • 我认为崩溃可能与使用 window.setTimeout() 和 window.setInterval() 有关,因为它们似乎是不同JS文件中使用唯一常用功能,导致项目在注释时停止崩溃 . 在我们global.js中,我添加了此代码以供使用:(function ...

    我认为崩溃可能与使用 window.setTimeout() 和 window.setInterval() 有关,因为它们似乎是不同JS文件中使用的唯一常用功能,导致项目在注释时停止崩溃 . 在我们的global.js中,我添加了此代码以供使用:

    (function (w) {

    w.windowBind = function (eventName, handler) {

    if (w.attachEvent) {

    w.attachEvent("on" + eventName, handler);

    } else if (w.addEventListener) {

    w.addEventListener(eventName, handler, false);

    }

    };

    var timeoutsToExpire = [],

    expireTimeouts = function () {

    for (var i = 0, l = timeoutsToExpire.length; i < l; i++) {

    w.clearTimeout(timeoutsToExpire[i]);

    }

    timeoutsToExpire = [];

    },

    intervalsToExpire = [],

    expireIntervals = function () {

    for (var i = 0, l = intervalsToExpire.length; i < l; i++) {

    w.clearInterval(intervalsToExpire[i]);

    }

    intervalsToExpire = [];

    };

    w.setExpiringTimeout = function (func, time) {

    var id = w.setTimeout(func, time);

    timeoutsToExpire.push(id);

    return id;

    };

    w.setExpiringInterval = function (func, time) {

    var id = w.setInterval(func, time);

    intervalsToExpire.push(id);

    return id;

    };

    w.windowBind("unload", function () {

    // expire timers

    expireTimeouts();

    expireIntervals();

    });

    w.windowBind("beforeunload", function () {

    // expire timers

    expireTimeouts();

    expireIntervals();

    });

    })(window);

    然后我更新了之前的 window.setTimeout() 和 window.setInterval() 引用来代替使用这些帮助器 . 这似乎暂时解决了 .

    Update: 也许我发布的太快了,它只是再次撞到了我 . 现在他们似乎非常间歇 .

    Update 2: 好吧,当我现在换班时,似乎可靠地发生了,呃 .

    展开全文
  • 我自己的jar包下载一、介绍常常有客户这样子要求:你要把我们的...目前,比较常用的实现Java导入、导出Excel的技术有:Jakarta POI、freemarker和Java Excel下面我就分别讲解一下如何使用这些技术实现导入、导出Excel...

    我自己的jar包下载

    一、介绍

    常常有客户这样子要求:你要把我们的报表直接用Excel打开(电信系统、银行系统)。或者是:我们已经习惯用Excel打印。这样在我们实际的开发中,很多时候需要实现导入、导出Excel的应用。

    目前,比较常用的实现Java导入、导出Excel的技术有:Jakarta POI、freemarker和Java Excel

    下面我就分别讲解一下如何使用这些技术实现导入、导出Excel

    二、使用Jakarta POI导出Excel

    Jakarta POI 是一套用于访问微软格式文档的Java API。Jakarta POI有很多组件组成,其中有用于操作Excel格式文件的HSSF和用于操作Word的HWPF,

    在各种组件中目前只有用于操作Excel的HSSF相对成熟。官方主页http://poi.apache.org/index.html,API文档http://poi.apache.org/apidocs/index.html

    1.环境配置

    下载jar

    官方下载:http://poi.apache.org/download.html这里可以下载到它的最新版本和文档,目前最新版本是3.7,这里使用比较稳定的3.6版。

    加入jar包

    将根目录下的poi-3.6-20091214.jar和Lib目录下三个通用包 commons-logging-1.1.jar junit-3.8.1.jar log4j-1.2.13.jar拷贝到项目的Lib下

    2.Jakarta POI HSSF API组件

    HSSF(用于操作Excel的组件)提供给用户使用的对象在rg.apache.poi.hssf.usermodel包中,主要部分包括Excel对象,样式和格式,还有辅助操作。有以下几种对象:

    常用组件:

    HSSFWorkbook excel的文档对象

    HSSFSheet excel的表单

    HSSFRow excel的行

    HSSFCell excel的格子单元

    HSSFFont excel字体

    HSSFDataFormat 日期格式

    HSSFHeader sheet头

    HSSFFooter sheet尾(只有打印的时候才能看到效果)

    样式:

    HSSFCellStyle cell样式

    辅助操作包括:

    HSSFDateUtil 日期

    HSSFPrintSetup 打印

    HSSFErrorConstants 错误信息表

    3. 基本操作步骤

    首先,理解一下一个Excel的文件的组织形式,一个Excel文件对应于一个workbook(HSSFWorkbook),一个workbook可以有多个sheet(HSSFSheet)组成,一个sheet是由多个row(HSSFRow)组成,一个row是由多个cell(HSSFCell)组成。

    基本操作步骤:

    a、用HSSFWorkbook打开或者创建“Excel文件对象”

    b、用HSSFWorkbook对象返回或者创建Sheet对象

    c、用Sheet对象返回行对象,用行对象得到Cell对象

    d、对Cell对象读写。

    4.我自己写的测试用例

    import java.io.FileOutputStream;

    import java.util.ArrayList;

    import java.util.List;

    import org.apache.poi.hssf.usermodel.HSSFCell;

    import org.apache.poi.hssf.usermodel.HSSFCellStyle;

    import org.apache.poi.hssf.usermodel.HSSFFont;

    import org.apache.poi.hssf.usermodel.HSSFRow;

    import org.apache.poi.hssf.usermodel.HSSFSheet;

    import org.apache.poi.hssf.usermodel.HSSFWorkbook;

    import org.apache.poi.hssf.util.Region;

    public class POIExportExcel {

    public HSSFWorkbook generateExcel1(List list, HSSFWorkbook wb, String title) {

    //行的数量

    int rows = 0;

    HSSFSheet sheet = wb.createSheet("Sheet1");

    // 数据格样式

    HSSFCellStyle dataCellStyle = createDataCellStyle(wb);

    // 小标题样式

    HSSFCellStyle cellStyle = createCellStyle(wb);

    sheet.setDefaultRowHeight((short) 400);//设置所有行高为400

    //设置列宽

    sheet.setColumnWidth((short) 1, (short) 2800);

    sheet.setColumnWidth((short) 2, (short) 2800);

    sheet.setColumnWidth((short) 3, (short) 2800);

    sheet.setColumnWidth((short) 4, (short) 2800);

    sheet.setColumnWidth((short) 5, (short) 2800);

    sheet.setColumnWidth((short) 6, (short) 2800);

    sheet.setColumnWidth((short) 7, (short) 2800);

    sheet.setColumnWidth((short) 8, (short) 2800);

    sheet.setColumnWidth((short) 9, (short) 2800);

    sheet.setColumnWidth((short) 10, (short) 3200);

    sheet.setColumnWidth((short) 11, (short) 3200);

    sheet.setColumnWidth((short) 12, (short) 3200);

    sheet.setColumnWidth((short) 13, (short) 3200);

    //标题行

    HSSFRow row1 = sheet.createRow((short) (rows++));

    row1.setHeight((short) 500);

    sheet.addMergedRegion(new Region(0, (short) 0, 0, (short) 13));//横跨1-14列

    createCell(row1, (short) 0, cellStyle, title);

    //表头行(1,2列合并;3,4,5,6,7列合并;8,9列合并)

    HSSFRow row2 = sheet.createRow((short) (rows++));

    sheet.addMergedRegion(new Region(1, (short) 0, 1, (short) 1));

    sheet.addMergedRegion(new Region(1, (short) 2, 1, (short) 6));

    sheet.addMergedRegion(new Region(1, (short) 7, 1, (short) 8));

    sheet.addMergedRegion(new Region(1, (short) 9, 1, (short) 9));

    sheet.addMergedRegion(new Region(1, (short) 10, 1, (short) 10));

    sheet.addMergedRegion(new Region(1, (short) 11, 1, (short) 11));

    sheet.addMergedRegion(new Region(1, (short) 12, 1, (short) 12));

    sheet.addMergedRegion(new Region(1, (short) 13, 1, (short) 13));

    createCell(row2, (short) 0, dataCellStyle, "name1");

    createNullCell(row2, (short) 1, dataCellStyle);

    createCell(row2, (short) 2, dataCellStyle, "name2");

    createNullCell(row2, (short) 3, dataCellStyle);

    createNullCell(row2, (short) 4, dataCellStyle);

    createNullCell(row2, (short) 5, dataCellStyle);

    createNullCell(row2, (short) 6, dataCellStyle);

    createCell(row2, (short) 7, dataCellStyle, "name3");

    createNullCell(row2, (short) 8, dataCellStyle);

    createCell(row2, (short) 9, dataCellStyle, "name4");

    createCell(row2, (short) 10, dataCellStyle, "name5");

    createCell(row2, (short) 11, dataCellStyle, "name6");

    createCell(row2, (short) 12, dataCellStyle, "name7");

    createCell(row2, (short) 13, dataCellStyle, "name8");

    //遍历集合,保存数据到单元格

    for(int i=0;i

    Object javaBean = list.get(i);

    //具体的数据值通过对象去获取,这里简单给值

    String variable1 = "value1"+"_"+i;

    String variable2 = "value2"+"_"+i;

    String variable3 = "value3"+"_"+i;

    String variable4 = "value4"+"_"+i;

    String variable5 = "value5"+"_"+i;

    String variable6 = "value6"+"_"+i;

    String variable7 = "value7"+"_"+i;

    String variable8 = "value8"+"_"+i;

    HSSFRow rowi = sheet.createRow((short) (rows++));

    sheet.addMergedRegion(new Region(i+2, (short) 0, i+2, (short) 1));

    sheet.addMergedRegion(new Region(i+2, (short) 2, i+2, (short) 6));

    sheet.addMergedRegion(new Region(i+2, (short) 7, i+2, (short) 8));

    sheet.addMergedRegion(new Region(i+2, (short) 9, i+2, (short) 9));

    sheet.addMergedRegion(new Region(i+2, (short) 10, i+2, (short) 10));

    sheet.addMergedRegion(new Region(i+2, (short) 11, i+2, (short) 11));

    sheet.addMergedRegion(new Region(i+2, (short) 12, i+2, (short) 12));

    sheet.addMergedRegion(new Region(i+2, (short) 13, i+2, (short) 13));

    createCell(rowi, (short) 0, dataCellStyle, variable1);

    createNullCell(rowi, (short) 1, dataCellStyle);

    createCell(rowi, (short) 2, dataCellStyle, variable2);

    createNullCell(rowi, (short) 3, dataCellStyle);

    createNullCell(rowi, (short) 4, dataCellStyle);

    createNullCell(rowi, (short) 5, dataCellStyle);

    createNullCell(rowi, (short) 6, dataCellStyle);

    createCell(rowi, (short) 7, dataCellStyle, variable3);

    createNullCell(rowi, (short) 8, dataCellStyle);

    createCell(rowi, (short) 9, dataCellStyle, variable4);

    createCell(rowi, (short) 10, dataCellStyle, variable5);

    createCell(rowi, (short) 11, dataCellStyle, variable6);

    createCell(rowi, (short) 12, dataCellStyle, variable7);

    createCell(rowi, (short) 13, dataCellStyle, variable8);

    }

    return wb;

    }

    /**

    * 创建单元格

    * @param row

    * @param id

    * @param style

    * @param value

    */

    private void createCell(HSSFRow row, short id, HSSFCellStyle style,

    String value) {

    HSSFCell cell = row.createCell((short) id);

    // cell.setEncoding(HSSFCell.ENCODING_UTF_16);

    cell.setCellValue(value);

    cell.setCellStyle(style);

    }

    /**

    * 创建空的单元格

    */

    private HSSFCell createNullCell(HSSFRow row, short id, HSSFCellStyle style) {

    HSSFCell null1Cell = row.createCell(id);

    null1Cell.setCellStyle(style);

    return null1Cell;

    }

    /**

    * 设置数据单元格样式

    * @param wb

    * @return

    */

    private HSSFCellStyle createDataCellStyle(HSSFWorkbook wb) {

    HSSFCellStyle dataCellStyle = wb.createCellStyle();

    // 水平居中

    dataCellStyle.setAlignment(HSSFCellStyle.ALIGN_LEFT);

    dataCellStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN);

    dataCellStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);

    dataCellStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);

    dataCellStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);

    return dataCellStyle;

    }

    /**

    * 设置单元格样式

    * @param wb

    * @return

    */

    private HSSFCellStyle createCellStyle(HSSFWorkbook wb) {

    // 小标题样式

    HSSFCellStyle cellStyle = wb.createCellStyle();

    // 水平居中

    cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);

    // 字体

    HSSFFont littleFont = wb.createFont();

    // 设置字体为粗体

    littleFont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);

    // 然后将字体关联到样式

    cellStyle.setFont(littleFont);

    cellStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN);

    cellStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);

    cellStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);

    cellStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);

    cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);

    return cellStyle;

    }

    public static void main(String[] args){

    /*String serverPath = request.getSession().getServletContext().getRealPath("/")+"exportExcel";

    //在服务器端创建文件夹

    File file = new File(serverPath+path);

    if(!file.exists()){

    file.mkdir();

    }

    SimpleDateFormat sfm = new SimpleDateFormat("yyyy-MM-dd");

    String filename = "excel" + "_" + sfm.format(new java.util.Date());

    String encodedfileName = new String(filename.getBytes(), "GBK");

    FileOutputStream out = new FileOutputStream(serverPath+path+"/"+encodedfileName+".xls"); */

    new POIExportExcel();

    String title = "POI导出excel";

    List list = new ArrayList();

    //加入两条做个测试

    list.add(new String());

    list.add(new String());

    try {

    FileOutputStream out = new FileOutputStream("D:/"+title+".xls");

    HSSFWorkbook wb =new HSSFWorkbook();

    wb = new POIExportExcel().generateExcel1(list,wb,title);

    wb.write(out);

    /*List srcfile=new ArrayList();

    srcfile.add(new File(serverPath+path+"/"+encodedfileName+".xls"));

    //将服务器上存放Excel的文件夹打成zip包

    File zipfile = new File(serverPath+path+".zip");

    ZipUtil.zipFiles(srcfile, zipfile);

    //弹出下载框供用户下载

    this.downFile(response,serverPath, path+".zip");*/

    } catch (Exception e) {

    // TODO Auto-generated catch block

    e.printStackTrace();

    }

    }

    }

    结果如下图:

    b9d9452fec9f002444adc131350f3eec.png

    三、使用Jakarta POI读取(导入)Excel

    依赖dom4j.jar和xmlbeans.jar

    没有的话会抛出:Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/xmlbeans/XmlObject

    import java.io.File;

    import java.io.FileInputStream;

    import java.sql.Date;

    import java.text.DecimalFormat;

    import java.util.ArrayList;

    import java.util.List;

    import org.apache.commons.lang.StringUtils;

    import org.apache.poi.hssf.usermodel.HSSFCell;

    import org.apache.poi.hssf.usermodel.HSSFWorkbook;

    import org.apache.poi.poifs.filesystem.POIFSFileSystem;

    import org.apache.poi.ss.usermodel.Cell;

    import org.apache.poi.ss.usermodel.DateUtil;

    import org.apache.poi.ss.usermodel.RichTextString;

    import org.apache.poi.ss.usermodel.Row;

    import org.apache.poi.ss.usermodel.Sheet;

    import org.apache.poi.ss.usermodel.Workbook;

    import org.apache.poi.xssf.usermodel.XSSFWorkbook;

    public class MyExcelReader {

    /**

    * 分析获取上传的excel文件中的数据信息。 仅对Excel文件的第一张表进行分析,分析过程中如果遇到空行就结束。

    * @param file

    * excel

    * @return excel中对应的数据以二维数组形式返回

    * @throws Exception

    */

    private String[][] readExcel(File file) {

    String[][] data = null;

    Workbook wb = null;

    try {

    // 解析excel2003

    if (file.getName().endsWith(".xls")) {

    POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream(

    file.getPath()));

    // excel数据对象

    wb = new HSSFWorkbook(fs);

    }

    // 解析excel2007及以上

    if (file.getName().endsWith(".xlsx")) {

    wb = new XSSFWorkbook(new FileInputStream(file.getPath()));

    }

    // excel中对应的表单

    Sheet sheet = wb.getSheetAt(0);

    // excel中的有效列数

    int colNum = getValidColNum(sheet);

    // 只有excel的有效列数大于零才对数据进行分析

    if (colNum > 0) {

    // 从Excel中获取到的有效数据

    data = getExcelData(sheet, colNum);

    }

    } catch (Exception e) {

    e.printStackTrace();

    }

    return data;

    }

    /**

    * 得到表单的有效列数. 获取表单第一行开始位置连续非空单元格的个数

    *

    * @param sheet

    * Excel的表单

    * @return 列数

    * @throws Exception

    */

    private int getValidColNum(Sheet sheet) throws Exception {

    // 判断文件是否为空文件

    if (sheet.getRow(0) == null) {

    System.out.println("文件为空");

    throw new Exception("error.importExcel.blankExcelFile");

    }

    // 表单总列数

    int colNum = sheet.getRow(0).getPhysicalNumberOfCells();

    Row row = sheet.getRow(0);

    // 如果表单第一行即表头位置出现空单元格,该单元格后面的信息不在导入

    for (int i = 0; i < colNum; i++) {

    if (row.getCell((short) i) != null) {

    Cell cell = row.getCell((short) i);

    String value = this.getCellValue(cell);

    if (StringUtils.isEmpty(value)) {

    colNum = i;

    break;

    }

    }

    // 如果列表头信息为空,不读取后面的数据

    else {

    colNum = i;

    }

    }

    return colNum;

    }

    /**

    * 读取Excel数据. 读取过程中,遇到空行自动停止,舍弃空行后面的数据。 可根据数组信息获取Excel的有效行数

    *

    * @param sheet

    * 表单对象

    * @param colNum

    * 有效列数

    * @return 数据二维数组

    */

    private String[][] getExcelData(Sheet sheet, int colNum) {

    int tempRowNum = sheet.getPhysicalNumberOfRows();

    // 存储从Excel表中读取的数据信息

    List> dataList = new ArrayList>();

    // 读取Excel数据,将其存储在可变长的List容器中,同时得到Excel文件的有效数据行数

    int rowNum = 0;

    for (; rowNum < tempRowNum && sheet.getRow(rowNum) != null; rowNum++) {

    List rowData = new ArrayList();

    // 对行信息进行累加,判断该行是否为空行

    String rowValue = "";

    for (int j = 0; j < colNum; j++) {

    if (sheet.getRow(rowNum).getCell((short) j) != null) {

    Cell cell = sheet.getRow(rowNum).getCell((short) j);

    String value = getCellValue(cell);

    rowData.add(value);

    rowValue += value;

    } else {

    rowData.add(null);

    }

    }

    // 读取信息时如遇到空行,结束读入

    if (rowValue.length() == 0) {

    break;

    } else {

    dataList.add(rowData);

    }

    }

    // 将Excel数据转存到数组对象中

    String[][] data = new String[rowNum][colNum];

    for (int i = 0; i < dataList.size(); i++) {

    for (int j = 0; j < dataList.get(i).size(); j++) {

    data[i][j] = dataList.get(i).get(j);

    }

    }

    return data;

    }

    /**

    * 得到Excel单元格的数据内容

    *

    * @param cell

    * Excel单元格对象

    * @return 单元格的内容

    */

    public String getCellValue(Cell cell) {

    // excel的日期格式和java的有很大区别

    if (cell.getCellType() == Cell.CELL_TYPE_NUMERIC

    && DateUtil.isCellDateFormatted(cell)) {

    return new Date(cell.getDateCellValue().getTime()).toString();

    } else if (cell.getCellType() == HSSFCell.CELL_TYPE_NUMERIC) {

    double value = cell.getNumericCellValue();

    return new DecimalFormat("###.####").format(value);

    } else {

    String result = "";

    try {

    RichTextString textString = cell.getRichStringCellValue();

    if (textString != null) {

    result = textString.getString().trim();

    result = this.subStr(result);

    if (result.length() > 0) {

    char firstChar = result.charAt(0);

    // 如果信息不是以英文字符或数字开始,替换掉信息中的所有中英文空格,以英文或数字开始的信息不处理

    if (!(firstChar >= 'a' && firstChar <= 'z'

    || firstChar >= 'A' && firstChar <= 'Z' || firstChar >= '0'

    && firstChar <= '9')) {

    result = result.replaceAll(" ", "").replaceAll(" ",

    "");

    }

    }

    }

    } catch (Exception e) {

    e.printStackTrace();

    }

    return result;

    }

    }

    /**

    * 截取字符串中的内码

    *

    * @param str

    * @return

    */

    public String subStr(String str) {

    for (int i = 0; i < str.length(); i++) {

    // 韩文等乱码,均以开头以;结束的字符

    if (str.indexOf("") >= 0

    && str.indexOf(";", str.indexOf("")) > 0) {

    String s2 = str.substring(str.indexOf(""), str.indexOf(";",

    str.indexOf("")) + 1);

    s2 = this.cov(s2);

    str = str.substring(0, str.indexOf(""))

    + s2

    + str.substring(

    str.indexOf(";", str.indexOf("")) + 1, str

    .length());

    }

    }

    return str;

    }

    /**

    * 转化编码,韩文等乱码

    *

    * @param string

    * @return

    */

    public String cov(String string) {

    String str = string.replaceAll("", ",").replaceAll(";", "");

    String[] s2 = str.split(",");

    String s1 = "";

    for (int i = 1; i < s2.length; i++) {

    int a = Integer.parseInt(s2[i], 10);

    s1 = s1 + (char) a;

    }

    return s1;

    }

    /**

    * 测试

    * @param args

    */

    public static void main(String[] args) {

    File file = new File("D:/test.xlsx");

    // 保存Excel文件到服务器

    String[][] dataArray = new MyExcelReader().readExcel(file);

    // System.out.println("标题:"+dataArray[0].toString());

    for (int i = 0; i < dataArray.length; i++) {

    String[] rowData = dataArray[i];

    for (int j = 0; j < rowData.length; j++) {

    System.out.println("第" + (i + 1) + "行第" + (j + 1) + "列:"

    + dataArray[i][j]);

    }

    }

    }

    }

    三、使用freemarker导出excel

    貌似是只支持office2007之后的版本,wps也会出问题。

    先放两个链接供参考:

    四、第三方插件Java Excel(jxl)操作excel

    http://blog.csdn.net/jerehedu/article/details/45195359

    参考文章:

    9&period;java 操作mongodb插入、读取、修改以及删除基础

    1 package mongodb; import java.net.UnknownHostException; import java.util.ArrayList; import java.uti ...

    Java——操作Excel表格,读取表格内容

    JAVA EXCEL API:是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容.创建新的Excel文件.更新已经存在的Excel文件.使用该API非Windows操作系统也可以通过 ...

    java操作office和pdf文件java读取word,excel和pdf文档内容

    在平常应用程序中,对office和pdf文档进行读取数据是比较常见的功能,尤其在很多web应用程序中.所以今天我们就简单来看一下Java对word.excel.pdf文件的读取.本篇博客只是讲解简单应 ...

    Java操作Jxl实现导出数据生成Excel表格数据文件

    实现:前台用的框架是Easyui+Bootstrap结合使用,需要引入相应的Js.Css文件.页面:Jsp.拦截请求:Servlet.逻辑处理:ClassBean.数据库:SQLserver. 注意: ...

    Java操作Mongodb 保存&sol;读取java对象到&sol;从mongodb

    从http://central.maven.org/maven2/org/mongodb/mongo-java-driver/选择一个版本进行下载,这里选择的是3.0.0版本,具体下载以下jar包: ...

    Oracle11g导出dmp并导入Oracle10g的操作记录

    Oracle11g导出dmp并导入Oracle10g的操作记录. 操作环境说明: Oracle11g环境:Windows7,Oracle Database 11g Enterprise Edition ...

    Java操作Excel(使用POI)

    背景说明 以前写过使用 JXL 操作Excel的例子,但JXL对于Excel 2007版本以后的文件(即扩展名为 .xlsx)无法读取,也找不到可以支持的包.所以,有时不得不用 POI 来操作Exce ...

    java 操作 csv文件

    CSV是逗号分隔文件(Comma Separated Values)的首字母英文缩写,是一种用来存储数据的纯文本格式,通常用于电子表格或数据库软件.在 CSV文件中,数据“栏”以逗号分隔,可允许程序通 ...

    Oracle11g中数据的倒库和入库操作以及高版本数据导入低版本数据可能引发的问题

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1.前言 在10g之前,传统的导出和导入分别使用EXP工具和IMP工具 ...

    随机推荐

    &lbrack;原创&rsqb;Centos7 内部常用软件升级计划

    GCC 当前系统版本 gcc version 4.8.5 20150623 (Red Hat 4.8.5-4) (GCC)

    Transform-style和Perspective属性

    transform-style属性 transform-style属性是3D空间一个重要属性,指定嵌套元素如何在3D空间中呈现.他主要有两个属性值:flat和preserve-3d. transfor ...

    浅析requests库响应对象的text和content属性

    在做爬虫时请求网页的requests库是必不可少的,我们常常会用到 res = resquests.get(url) 方法,在获取网页的html代码时常常使用res的text属性: html = re ...

    get新技能:上传了 flv 或 MP4 文件到服务器&comma;可访问总是出现 &OpenCurlyDoubleQuote;无法找到该页”的 404 错误

    为什么我上传了 flv 或 MP4 文件到服务器,可访问总是出现 “无法找到该页”的 404 错误 为什么我上传了 flv 或 MP4 文件到服务器,可输入正确地址通过协议来访问总是出现 “无法找到该 ...

    【性能测试】使用ab做Http性能测试

    [[TOC]] Http性能测试工具 ab(ApacheBench) 安装: yum install httpd 使用 ab -n 20 -c 1 192.168.35.1:8988/fortest ...

    ipsec-tools安装教程

    ipsec-tools最新版本为0.8.2,此处以0.7.3版本为例说明安装和使用过程.可参考ipsec-howto. 安装步骤 ipsec-tools依赖于linux2.6版本内核,在安装ipsec ...

    强化学习 CartPole实验的一些启发 有没有可能设计一个新的实验呢?(杆子可以向360度方向倾倒,可行吗?)

    最近在看强化学习方面的东西,突然想到了这么一个事情,那就是经典的CartPole游戏我们改变一下,或者说升级一下,那么使用强化学习是否能得到不错的效果呢? 原始游戏如图: 一点个人的想法: ===== ...

    2008技术内幕:T-SQL语言基础 联接查询摘记

    续 2008技术内幕:T-SQL语言基础 单表查询摘记 第三章 联接查询 Microsoft SQL Server 2008 支持四种表运算符 join(ANSI标准).apply(T-SQL扩展). ...

    JS实现队列

    JS实现队列: 队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表.进行插入操作的端称为队尾 ...

    展开全文
  • 好久不见,我又来了1、宽窄字节简介: 其实最早的系统都是窄字节的,也就是我们很常用的 char 因为都是英文的,英文本身就26个字母,再加上其他的一些标点符号之类的,char 也能表示的下,无符号的 char 最多能表示 ...

    好久不见,我又来了

    1、宽窄字节简介:

        其实最早的系统都是窄字节的,也就是我们很常用的 char 因为都是英文的,英文本身就26个字母,再加上其他的一些标点符号之类的,char 也能表示的下,无符号的 char 最多能表示 255个字符,足够用了。随着,操作系统的国际化,比如:Windows 系统不仅有英文的,也有中文的,韩文的,日文的,所以原来用一个 char 来表示一个英文字符的方式已经无法表达中文的一个汉字了。汉字是很多的,好几万个,单纯的 char 的取值范围已经无法表达的下了。这时候有大牛就想到了,既然用一个char表示不下,那么就用2个char来表示一个汉字,这样就可以解决了,所以窄字节的表示方法就是数字、字母之类的仍然用一个char来表示,一个汉字或者全角字符使用2个 char 来表示。没错,这样可以解决大多数问题,在中文的系统上能正常的显示中文,在日文的系统上也能正常的显示日文。这也就是现在的多字节字符集(也就是字符有些由1字节表示而有些由两个字节表示),也就是窄字节(也就是ASCII字符)。

        没错,这样可以解决大多数问题,在中文的系统上能正常的显示中文,在日文的系统上也能正常的显示日文,但是如果把一个在中文系统上写的软件,界面上带有汉字的程序拿到一个日文的Windows操作系统上就会有问题了,乱码了,汉字无法正常显示。那难道每个系统都单独再写一个软件么,显然工作量太大了,不现实。由此诞生的便是宽字节了。

        为了解决这个国际化的问题,微软在Windows操作系统中引入了宽字节的功能,即:Unicode,Unicode中规定任意一个字符都占用两个字节的存储空间,即2个char,不管是数字或者字母,还是一个汉字 都占用2个字节。用两个char难免不方面,所以微软直接使用一个新的类型:wchar_t,大家看起来比较陌生,不过他的原型实际上就是 unsigned short,这个大家比较熟悉吧,占用2个字节的存储空间。

      宽字节也有许多种,有utf-8也就是我们这学期web所学的那个,但是这个与Unicode并不是一个东西,与之相似的还有utf-16等许许多多,有兴趣的话可以去了解一下他们之间的区别。

    2、操作系统及VS编译器对宽窄字节的编码支持:

      说了这么多,为什么之前我们没见过,一是因为我们没有学习更高级的文件操作,二是我们没有接触过WinAPI(Windows接口函数)。其实在编译器中也有对宽窄字节的支持。在VC++ 6.0 默认为窄字节编码,vs2005开始便已经支持宽字节编码。(vc6真的还是早点丢掉好点,vscode和vs2019之类的不香么)

     vs2019中查看编码方式:右键项目->属性

    364f4e5cbea89a1500b5132a26e0c8b3.png

    下拉栏里便有Unicode与多字节字符集。

      关于WinAPI这里举个例子吧

    例如基本的MessageBox函数(简单对话窗窗口函数)

    09fb05d0cb1394f42d32c631881fb658.png

    _T("")中的是字符串,然后我们看到它的定义

    865a2c5c60cfc1f6aa784a7efebb436f.png

    可以看的在编译的时候根据你选择的字符集,编译的函数也将不同,也就是它对字符串的处理不同,宽字节则使用MessageBoxW,窄则A。

    (以上的例子只是想说,不同的字符集,编译器会做不同的处理)

    3、宽窄字符串的优缺点: 

         虽然Unicode是好,但是他在传输时会比多字节字符集多出许多许多的大小。特别是当文件很大的时候,不同的编码格式会有很大的大小差距。所以,其实在传输的时候(大多数)会将宽字节转成窄字节进行传输,传输以后再转换成宽字节,这部分也有对应的API函数,可以根据需要来进行转换。

    4、复杂的宽窄字节数据类型:刚开始学编程的时候我们就接触了 char、char* 之类的,属于窄字节的,按照刚刚讲的,又多了一个 wchar_t 类型的字符,字符串指针的话就可以是 wchar_t* 类型。但是,在我们平时的编程过程中还会见到很多其他的复杂类型,如下:

    ● 窄字节:char、char * 、const char *CHAR、(PCHAR、PSTR、LPSTR)、LPCSTR

    ● Unicode 宽字节:wchar_t、wchar_t * 、const wchar_t *WCHAR、(PWCHAR、PWSTR、LPWSTR)、LPCWSTR

    ● T 通用类型:TCHAR、(TCHAR * 、PTCHAR、PTSTR、LPTSTR)、LPCTSTR(这一行属于WinAPI)

    以上是一一对应的,即wchar_t类似于char,是宽字节的一个字符

    通用类型会根据选择的编码方式进行变化。

    5、最后: 

    其实string也是存在宽字节与窄字节的我们右键string转到它的定义发现

    e3e336a3242427607e98f2f693cea45e.png

    讲了这么多在c++作业11-9中

    如果我们新建一个文本其中有中午字符的话,会出现乱码的现象,例如

    78fc93fa38013d13c92a1a422795f0a3.png

    运行以后就会变成

    bfce0dc4b9ed5e44d9ade95742f3ab01.png

    而那个写入的txt内容则是正常的

    这是因为txt的编码格式问题

    如果我们点开txt将文件->另存为

    d95a764329cba1a5ccaf11b78214ddb4.png

    就和我们之前讲的,utf-8是宽字节,无论任何字符用2个字节表示

    我们先不更改编码格式查看txt的属性

    3536fe0332cd3c6463025c079a3e5570.png

    发现它的大小为16字节,一共8个字符,正好是8*2字节。

    我们再将txt的编码格式改为ANSI

    a93758f133afdad9ac8962a0328a36ba.png

    再次查看大小

    605e2ba71d09e8df9145c90ef372dada.png

      发现现在变成12了,这时候其实就是窄字节,也就是2+2+1+1+2+2+1+1=12

    刚刚好。乱码的原因其实就是txt的编码格式问题,使用的窄字节读入,自然会出现乱码,切换以后便可以正常。我们再次运行程序

    0aa7c21aa3ee50adb8a91b10e681f764.png

    ----------------------------------------------------------------------------

        今天就先这样把,这学期前半学期由于电脑在学校许多事情都干不了,太难受了。这应该也是这学期最后一篇推文了,暑假我应该还是会更新。

       关于这篇推文有什么问题,可以直接找我(或许有错误什么的我没发现的),我一定尽力进行解答,当然我也不是什么都会,还请轻虐。

    如果你也想分享你的笔记,私聊我呗,好东西要大家分享嘛。球球了。Orz

    展开全文
  • luatinker 常用函数说明

    千次阅读 2014-07-21 16:16:17
    uatinker 提供 lua与 C++ 函数相关接口函数 ,这样便可以屏蔽底层函数,大大提升了了开发效率,但是luatinker是韩国人写 所以函数说明是韩文的,所以我把经常用到函数功能写下了,方便新手使用 ...
    uatinker 提供的 lua与 C++ 函数的相关接口函数 ,这样便可以屏蔽底层函数,大大提升了了开发效率,但是luatinker是韩国人写的 所以函数的说明是韩文的,所以我把经常用到函数的功能写下了,方便新手使用


    lua_State *l= lua_open() 建立lua栈用于和C交互 luaopen_base(lua_State*L) 打开基本函数库 

    lua_tinker::def(L,"name",name) 将函数名输入栈中,保证lua脚本可以正常使用,这样C++注册函数,lua便可以调用函数 

    lua_tinker::dofile(L,"filename") 调用lua脚本文件
    lua_close(lua_State *L); 关闭栈 

    lua_tinker::call<void>(L, "print_table", temp); //调用lua中的函数,print_table 是函数名,temp 是参数名称,call也是模板函数,用于表明函数的返回类型,如果没有参数可以这个参数可以不写(本质是函数的重载)
    lua_tinker::set(L, "cpp_int", cpp_int); 向栈中倒入变量, 

    lua_tinker::dofile(L, "sample2.lua"); 打开文件
    int lua_int = lua_tinker::get<int>(L, "lua_int"); 获取变量 luaopen_string(lua_State * l) //打开string库lua_tinker::class_add<base>(L,"base") //添加类也可以认为添加table
    lua_tinker::class_add<T>(lua_State*L ,const char* name)//其作用有2个

    其一通过class_name<T> 这个产生一个global name ,好让以后在lua_tinker这层融合里面把模板能识别的类转到lua能接受的全局字串上


    lua_tinker::class_def<base>(L,"is_base",&base::is_base) 给栈注册函数 函数的参数不要是const类型的


    lua_tinker::class_inh<test, base>(L); //告诉lua两个类的继承关系test 继承自base类,lua无法自己分辨类的继承关系,所以导致子类无法调用


    lua_tinker::class_con<test>(L,lua_tinker::constructor<int>()); //用于注册构造函数,这样lua中的变量便可以轻松使用该类,并且可以初始化

    lua_tinker::class_def<test>(L, "is_test", &test::is_test); 添加类的成员函数

    luatinker中专门有table类,用于建立类似于lua中的table变量


    lua_tinker::table haha(L,"haha")//建立表,表名为hahahaha.set("value",2) //给表赋值haha.set("inside", lua_tinker::table(L)); // 表中还可以再建立一个表


    lua_tinker::table inside = haha.get<lua_tinker::table>("inside"); //获取table的值可以看到类的get函数和普通的get函数一样都是模板函数
    因为get函数是从lua中取出变量到C中,所以与C不同必须声明类型,而set函数无需这样做因为,设置值是lua无需指定变量类型
    lua_tinker::call<void>(L, "print_table", temp); //执行lua中的打印函数
    lua_tinker::table ret = lua_tinker::call<lua_tinker::table>(L, "return_table", "give me a table !!"); //执行lua中的取值函数,并且设置函数的返回类型



    lua_tinker::enum_stack(lua_State* L)//用于枚举lua栈中内容的。 lua_tinker::def(L, "_ALERT", show_error);//注册函数到栈中区,lua可以调用C/C++中的函数
    展开全文
  • Unity3D 常用插件

    2016-10-17 14:00:00
    1.FX Maker ...支持英文和韩文,由开发商IGSoft提供. 2.Water.unitypackage 这是一款用于水插件,性能还比较高,用于移动设备也没问题,弥补了专业版unity水特效资源在移动设备卡机不足. ...
  • js常用验证

    2010-06-29 22:16:00
     解决思路:CSS对象ime-mode属性可以设置是否允许用户切换输入中文,韩文,日文等双字节输入法。代码示例: 注意:应用ime-mode:disabled后,用户不可以输入双字节字符。 特别提示 代码运行后,在文本框中不能...
  • 常用编码知识

    2008-01-07 21:16:14
    当文章/网页中包含繁体中文、日文、韩文等等时,这些内容可能无法被正确编码。 BIG5:繁体中文编码。主要在台湾地区采用。 GBK:支持简体及繁体中文,但对他国非拉丁字母语言还是有问题。 UTF-8:Unicode编码一种。...
  • Mac 常用软件注册码

    千次阅读 2012-11-26 22:10:48
    name: Pablo/nop serial: SMH2-6F4K-8SK9-ST5...Final Cut Pro 5.1正式安装版(含中文/英文/日文/韩文等语言)业界唯一支持DV/SD/HD电影专业视频软件序列号: SN: D-340-CTH-206-RUC-282-NYH-170-RAB-UHB  D-
  • 分词技术不仅仅适用于中文,对于英文、日文、韩文等语言也同样适用。 虽然英文中有天然单词分隔符(空格),但是常有单词与其他标点黏滞情况,比如"Hey, how are you."中"Hey"和"you"是需要与身后标点分隔...
  • 3.常用的正则表达式总结:  匹配符号: 2E80~33FFh:中日韩符号区。收容康熙字典部首、中日韩辅助部首、注音符号、日本假名、韩文音符,中日韩的符号、标点、带圈或带括符文数字、月份,以及日本的假名组合、...
  • 2006/03/23 加入了韩文支持, 感谢在韩国工作网友Sang Jian,韩文支持 OpenSwing_ko_KR.properties文件由他提供 2006/04/04 对JFileTree加入了文件过滤器建构式.并对显示进行了排序 -----------------------------...
  • Latex CJK,tex使用中文

    千次阅读 2013-03-18 20:02:03
    CJK 是中文(Chinese)、日文(Japanese)、韩文(Korean)三国文字缩写。顾名思义,它能够支持这三种文字。实际上,CJK 能够支持在 LaTeX 中使用包括中文、日文、韩文在内多种亚洲双字节文字。 (转载请标注:...
  • Windows上字符转换

    千次阅读 2015-07-25 22:06:21
    第一个参数的常用值是CP_ACP和CP_OEMCP。这到底指是什么代码页呢? 我编了小程序做了实验。CP_ACP和CP_OEMCP,分别是指当前计算机上Windows操作系统Windows代码页与OEM代码页。对于东亚简体中文、繁体...
  • Python中字符串基础

    2018-11-12 19:38:49
    字符串是Python中一种常用的有序但是不可变得容器类的数据类型,可以同时存储多个字符,属于序列。 用单引号或者双引号括起来的任意字符集 2、字符串中的字符 a.普通的字符:包含数字字符、字母、普通符号(如:+ ...
  •  常用编码:  codepage=936 简体中文GBK  codepage=950 繁体中文BIG5  codepage=437 美国/加拿大英语  codepage=932 日文  codepage=949 韩文  codepage=866 俄文  codepage=65001 unicode UTF-8  本例子中...
  • 韩语字体+Gulim字体包

    2020-01-02 20:05:27
    解决网页,PDF和Office档案韩文显示问题~ Gulim字体为常用韩语字体,字体适配于绝大部分现行韩文档案.
  • 前端代码基础认识

    2020-09-03 20:01:48
    常用标签 1.认识结构 文档头:告诉浏览器用哪一种方式编译代码 <!DOCTYPE html> head放置是配置文件 <head></head> meta字符集相当于字典。正常情况下,只能识别英文.识别不了中文韩文 <...
  • GBK–》国标(左边是中文,右边是编码)韩文字符集、日文字符集、美国字符集(ASCII码)、西欧字符集Unicode字符集(里面整合了中文、韩文、美国等的字符集)(常用的utf-8)操作系统的字符集①在windows下:cmd–》chcp,...
  • 2.“不要 还要”等常用词重码,我们把“还”反拆,即“之”“不”这样拆,就可将这组最常用的重码分开。 3.“问题”极常用,但重码多,带有这二字的四字词也极多重码。因此我们可把“问”里面的“口”象形地改为...
  • 浅谈MySQL字符集

    2017-11-01 21:11:23
    字符集例子:在mysql里面存储一个a,其实在里面存的是...Unicode字符集(里面整合了中文、韩文、美国等的字符集)(常用的utf-8)操作系统的字符集①在windows下:cmd–》chcp,如果显示“936”,则表示是中文字符集
  • python - 字符串编码

    2019-10-03 04:38:10
    python 常用的编码类型: GB2312编码:主要用于汉字处理和汉字通信等系统的信息交互。 ANSI(扩展的ASCII编码):主要是简体中文的交互(用一个字节表示英文,用两个字节表示一个中文)也叫GBK编码。 GBK...
  • C++标准里 string和wstring

    千次阅读 2019-09-12 11:18:26
    前者string是常用类型,可以看作char[],其实这正是与string定义中 _Elem=char相一致。而wstring,使用是wchar_t类型,这是宽字符,用于满足非ASCII字符要求,例如Unicode编码,中文,日文,韩文什么。对于...
  • 字符编码

    2020-09-05 17:58:24
    Unicode把所有语言统一到一套编码里(最常用的是UCS-16) UTF-8“可变长编码” UTF-8编码把一个Unicode字符根据不同的数字大小编码成1-6个字节, 常用的英文字母被编码成1个字节, 汉字通常是3个字节, 只有很生僻的...
  • 编码字符集

    2017-12-02 07:04:00
    这里给大家讲解一下我们常用的字符集,一般会在我们编写HTML页面的时候用到,例如HTML页面meta标签中的charset属性值,当然我们这里主要说以下几种: 1.GB2312:全称国家标准第2312条,包含中文,韩文等亚洲文字【但是...
  • 一系列按照特定顺序组织计算机数据和指令集合常用软件: 系统软件 Dos Window Linux,Mac 应用软件 微信 QQ 迅雷 什么是开发 制作软件过程 人机交互 使用软件过程 图形化界面 命令行方式 计算机语言 ...

空空如也

空空如也

1 2 3
收藏数 55
精华内容 22
关键字:

常用的韩文