精华内容
下载资源
问答
  • 今天用PL/SQL导入数据的时候遇到无法导入,提示UTF16 detected,this is not yet supported by the importer。另外换sqluldr导入数据后发现数据全部为null,看来确实是UTF16格式不支持在我的ORACLE9i数据库中。无奈...

    今天用PL/SQL导入数据的时候遇到无法导入,提示UTF16 detected,this is not yet supported by the importer。另外换sqluldr导入数据后发现数据全部为null,看来确实是UTF16格式不支持在我的ORACLE9i数据库中。无奈只得处理下,有一个比较简单方法是用editplus打开后复制一份到新文本中,这样新文本的数据就会和系统一致。另外一个方法自然是写个简单代码直接从UTF16转到UTF8。以下代码我借鉴了网上一些资料后自己写了,里面还有一些未知bug,但是自己现在暂时用来转换整数号码文本没有问题,以后有时间再进一步改进。

    功能:利用流方式以UTF16格式读取源UTF16文本中每一行后添加到StringBuffer中,再将StringBuffer以UTF8格式写入新文本中。package test;

    import java.io.BufferedReader;

    import java.io.File;

    import java.io.FileInputStream;

    import java.io.FileOutputStream;

    import java.io.IOException;

    import java.io.InputStreamReader;

    import java.io.OutputStreamWriter;

    public class Utf16ToUtf8 {

    private int count = 0;

    public void Utf16RedWrite(String filePath1,String filePath2) {

    StringBuffer buffer = new StringBuffer();

    try {

    // --读

    BufferedReader br = new BufferedReader(new InputStreamReader(

    new FileInputStream(filePath1), "UTF-16"));

    // System.out.println(br.readLine());// 中a

    while (br.ready()) {

    buffer.append(br.readLine());

    buffer.append("\n");

    count++;

    }

    // --正确的字符流写

    OutputStreamWriter ow = new OutputStreamWriter(new FileOutputStream(

    filePath2), "UTF-8");

    ow.write(buffer.toString());

    ow.close();

    br.close();

    } catch (IOException e) {

    e.printStackTrace();

    }

    }

    public static void main (String args[]){

    Utf16ToUtf8 utu = new Utf16ToUtf8();

    String f1 = "E:/sql_loader/sqlload_watone/20110522.txt";

    String f2 = "E:/sql_loader/sqlload_watone/20110522_1.txt";

    utu.Utf16RedWrite(f1,f2);

    }

    }

    展开全文
  • 当我使用iconv从UTF16转换为UTF8时,一切都很好,反之亦然,它不起作用。我有这些文件:a-16.strings: Little-endian UTF-16 Unicode c program texta-8.strings: UTF-8 Unicode c program text, with very long ...

    当我使用iconv从UTF16转换为UTF8时,一切都很好,反之亦然,它不起作用。

    我有这些文件:

    a-16.strings: Little-endian UTF-16 Unicode c program text

    a-8.strings: UTF-8 Unicode c program text, with very long lines

    编辑器中的文本看起来很好。当我运行这个:

    iconv -f UTF-8 -t UTF-16LE a-8.strings > b-16.strings

    然后我得到这个结果:

    b-16.strings: data

    a-16.strings: Little-endian UTF-16 Unicode c program text

    a-8.strings: UTF-8 Unicode c program text, with very long lines

    文件实用程序不显示预期的文件格式,文本在编辑器中看起来也不好看。 iconv是不是可以创建正确的BOM?我在MAC命令行运行它。

    为什么b-16不是正确的UTF-16LE格式?是否有另一种方式将utf8转换为utf16?

    更多的细节是下面。

    $ iconv -f UTF-8 -t UTF-16LE a-8.strings > b-16le-BAD-fromUTF8.strings

    $ iconv -f UTF-8 -t UTF-16 a-8.strings > b-16be.strings

    $ iconv -f UTF-16 -t UTF-16LE b-16be.strings > b-16le-BAD-fromUTF16BE.strings

    $ file *s

    a-16.strings: Little-endian UTF-16 Unicode c program text, with very long lines

    a-8.strings: UTF-8 Unicode c program text, with very long lines

    b-16be.strings: Big-endian UTF-16 Unicode c program text, with very long lines

    b-16le-BAD-fromUTF16BE.strings: data

    b-16le-BAD-fromUTF8.strings: data

    $ od -c a-16.strings | head

    0000000 377 376 / \0 * \0 \0 \f 001 E \0 S \0 K \0

    $ od -c a-8.strings | head

    0000000 / * * * Č ** E S K Y ( J V O

    $ od -c b-16be.strings | head

    0000000 376 377 \0 / \0 * \0 * \0 * \0 001 \f \0 E

    $ od -c b-16le-BAD-fromUTF16BE.strings | head

    0000000 / \0 * \0 * \0 * \0 \0 \f 001 E \0 S \0

    $ od -c b-16le-BAD-fromUTF8.strings | head

    0000000 / \0 * \0 * \0 * \0 \0 \f 001 E \0 S \0

    很明显,当我运行转换为UTF-16LE时,BOM丢失。

    有什么帮助吗?

    展开全文
  • 我试图在Linux中使用iconv()将UTF-16LE转换为UTF-8。使用iconv()将UTF-16LE转换为UTF-8(),我想它做..但我得到了一些麻烦..我的代码..,我认为两个代码是一样的,但是第一个没有工作。只有第二个工作。#include ...

    我试图在Linux中使用iconv()将UTF-16LE转换为UTF-8。使用iconv()将UTF-16LE转换为UTF-8()

    ,我想它做..

    但我得到了一些麻烦..我的代码..

    ,我认为两个代码是一样的,但是第一个没有工作。只有第二个工作。

    #include "stdio.h"

    #include "string.h"

    #include "iconv.h"

    #include "errno.h"

    #if 1

    int fn2Utf8(char inBuf[], char outBuf[]) {

    size_t readBytes = sizeof(inBuf);

    size_t writeBytes = sizeof(outBuf);

    char* in = inBuf;

    char* out = outBuf;

    iconv_t convert = iconv_open("UTF-8","UTF-16LE");

    if (iconv(convert, &in, &readBytes, &out, &writeBytes) < 0) {

    return (-1);

    }

    iconv_close(convert);

    printf("[%s] [%s]\n", inBuf, outBuf);

    return (out - outBuf);

    }

    int main() {

    char inBuf[128] ="\x5c\x00\xbd\xac\x01\xc6\x00\xd3\x5c\x00\x00\xb3\x78\xc6\x44\xbe\x5c\x00\x2a\x00\x00\x00";

    char outBuf[128];

    fn2Utf8(inBuf, outBuf);

    return 0;

    }

    #else

    int main() {

    char inBuf[128] = "\x5c\x00\xbd\xac\x01\xc6\x00\xd3\x5c\x00\x00\xb3\x78\xc6\x44\xbe\x5c\x00\x2a\x00\x00\x00";

    char outBuf[128];

    size_t readBytes = sizeof(inBuf);

    size_t writeBytes = sizeof(outBuf);

    char* in = inBuf;

    char* out = outBuf;

    iconv_t convert = iconv_open("UTF-8","UTF-16LE");

    if (iconv(convert, &in, &readBytes, &out, &writeBytes) < 0) {

    return (-1);

    }

    iconv_close(convert);

    printf("[%s] [%s]\n", inBuf, outBuf);

    return 0;

    }

    #endif

    可以complie 2种类型的代码与如果0 - >如果1

    ,我需要如果1种方法。

    2017-02-24

    hybang

    +0

    只是说“它不工作”并不是一个很好的问题描述。 ***如何***不起作用?它不是建立?跑步时你会碰撞吗?意外的结果?请详细说明!请花一些时间[阅读如何提出好问题](http://stackoverflow.com/help/how-to-ask)。 –

    +0

    @Someprogrammerdude这个问题是意想不到的结果。我尝试阅读。谢谢 –

    展开全文
  • 学习记录,便于查询 u8string, u16string, u32string 由 C++20 标准提供支持 ...// UTF8UTF16互相转换 u8string conv_utf16_to_utf8(u16string s); u16string conv_utf8_to_utf16(u8string s); /

    学习记录,便于查询

    u8string, u16string, u32string 由 C++20 标准提供支持

    学习自
    https://blog.csdn.net/liangzhao_jay/article/details/78788766

    头文件

    #include <string>
    	
    // UTF8与UTF16互相转换
    u8string	conv_utf16_to_utf8(u16string s);
    u16string 	conv_utf8_to_utf16(u8string s);
    
    // UTF16与UTF32互相转换
    u32string 	conv_utf16_to_utf32(u16string s);
    u16string 	conv_utf32_to_utf16(u32string s);
    
    // UTF8与UTF32互相转换
    u8string	conv_utf8_to_utf32(u32string s);
    u32string 	conv_utf32_to_utf8(u8string s);
    
    // 同类型不同类型名强制转换
    
    // 如果明确知道string内容为UTF8字符集,使用该函数将其强制转换为u8string
    u8string	cast_u8string(string s);
    string		cast_string(u8string s);
    
    // 如果明确知道wstring内容为UTF16字符集,使用该函数将其强制转换为wstring
    u16string 	cast_u16string(wstring s);
    wstring	 	cast_wstring(u16string s);
    

    函数定义

    #include <string>
    #include <boost/locale.hpp>
    
    u8string conv_utf16_to_utf8(u16string s)
    {
    	return boost::locale::conv::utf_to_utf<char8_t>(s.c_str());
    }
    
    u16string conv_utf8_to_utf16(u8string s)
    {
    	return boost::locale::conv::utf_to_utf<char16_t>(s.c_str());
    }
    
    u32string conv_utf16_to_utf32(u16string s)
    {
    	return boost::locale::conv::utf_to_utf<char32_t>(s.c_str());
    }
    
    u16string conv_utf32_to_utf16(u32string s)
    {
    	return boost::locale::conv::utf_to_utf<char16_t>(s.c_str());
    }
    
    u8string conv_utf8_to_utf32(u32string s)
    {
    	return boost::locale::conv::utf_to_utf<char8_t>(s.c_str());
    }
    
    u32string conv_utf32_to_utf8(u8string s)
    {
    	return boost::locale::conv::utf_to_utf<char32_t>(s.c_str());
    }
    
    u8string cast_u8string(string s)
    {
    	return u8string((char8_t*)s.data(), s.size());
    }
    
    string cast_string(u8string s)
    {
    	return string((char*)s.data(), s.size());
    }
    
    u16string cast_u16string(wstring s)
    {
    	return u16string((char16_t*)s.data(), s.size());
    }
    
    wstring cast_wstring(u16string s)
    {
    	return wstring((wchar_t*)s.data(), s.size());
    }
    
    
    展开全文
  • 其次,存在字节类,它只是字节序列,通常表示存储在编码中的字符串(如utf-8或iso-8859-15).这对您意味着什么?据我了解,您想读写utf-8文件.让我们编写一个程序,用“?”字符替换所有“?”def main():# Let...
  • var ServerMessagefunction utf8to16(str) {var out, i, len, c;var char2, char3;out = "";len = str.length;i = 0;while(i < len) {c = str.charCodeAt(i++);switch(c >> 4){case 0: case 1: case 2: cas...
  • utf-8utf-16的区别

    2021-02-14 13:27:00
    UTF-16表示"汉" 假如用UTF-16表示的话就是01101100 01001001(共16 bit,两个字节).程序解析的时候知道是UTF-16就把两个字节当成一个单元来解析.这个很简单. 用UTF-8表示"汉" 用UTF-8就有复杂点.因为此时程序是把一...
  • Buffer.from(buffer) buffer <Buffer> | <Uint8Array> 要拷贝数据的 Buffer 或 Uint8Array。 具体实现代码: Buffer.from(text.toString().slice(2), 'hex').toString('utf8')
  • 我正在读取具有UTF8编码的CSV文件:ifile = open(fname, "r")for row in csv.reader(ifile):name = row[0]print repr(row[0])这很好用,并打印出我希望它打印出来的东西; UTF8编码 str :> '\xc3\x81lvaro ...
  • AL16UTF16一个汉字占3个字节ZHS16GBK一个汉字占2个字节sql> conn / as sysdba;sql> shutdown immediate;database closed.database dismounted.oracle instance shut down.sql> startup mount;oracle ...
  • 目前最常用的字符集应该是 utf8utf8mb4 了,相比于 utf8utf8mb4 支持存储 emoji 表情,使用范围更广。本篇文章将会介绍 utf8 修改成 utf8mb4 字符集的方法。 1. utf8utf8mb4 字符集介绍 字符(Character...
  • 小编典典这个怎么样:... // my UTF-16 stringStringBuilder sb = new StringBuilder(input.length());for (int i = 0; i < input.length(); i++) {char ch = input.charAt(i);if (ch <= 0xFF) {sb.appen...
  • 我的db服务器是MySQL,utf-8设置为默认服务器编码,persons表是InnoDB表,也是用utf-8作为默认编码创建的,我的db连接字符串指定utf-8作为连接编码.我需要创建和存储新的Person pojos,通过从每行包含名称的txt文件...
  • 后来找到办法 -- 通过把 utf8 改成 utf8mb4 就可以了,并没有深究。一年后,我看到一篇文章讲到emoji文字占4个字节,通常要用utf-8去接收才行,其他编码可能会出错。我突然想到去年操作MySQL把utf8改成utf8mb4的事儿...
  • NOT NULL AUTO_INCREMENT, name varchar(20) DEFAULT NULL, code varchar(50) DEFAULT NULL, PRIMARY KEY (id), KEY idx_code (code), KEY idx_name (name) ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;...
  • UTF816进制工具

    2021-04-02 10:52:56
    //UTF816进制工具 functionutf8ToHex(s){ returnencodeURIComponent(s).replace(/%/g,"");//removeall'%'characters }
  • 将原来的zhs16gbk 导出的dmp 导入到utf-8的库中验证当前的字符集select * from v$nls_parametersselect name,value$ from sys.props$ where name='NLS_CHARACTERSET'问题IMP-00019: 由于 ORACLE 错误 12899 而拒绝行...
  • character_set_filesystem character_set_system character_sets_dir 可以更加数据名,批量生成所有的表设置为utf8mb4 SELECT CONCAT( 'ALTER TABLE ', TABLE_NAME, ' CONVERT TO CHARACTER SET utf8mb4 COLLATE utf...
  • 1. utf8utf8mb4 异同1234The character set named utf8 uses a maximum of three bytes per character and contains only BMP characters. The utf8mb4 character set uses a maximum of four bytes per ...
  • Java UTF8编码

    2021-02-12 13:39:46
    我有一个场景,其中一些特殊字符存储在系统默认编码的数据库(sybase)中,我必须获取此数据并使用Java程序将其发送到UTF-8编码的第三方.前提条件是发送给第三方的数据不应超过定义的最大大小.由于在转换为UTF-8时,一个...
  • 在c中读取UTF-16文件

    2021-05-25 04:42:53
    我正在尝试读取具有BOM的UTF-16LE编码的文件.我试过这段代码#include #include #include #include int main() {std::wifstream...fin.imbue(std::locale(fin.getloc(), new std::codecvt_utf16));if (!fin) {std::co...
  • mysql创建数据库 utf8

    千次阅读 2021-01-27 20:23:31
    CentOS6.5下通过Shell创建、备份、还原MySQL数据库CentOS6.5下通过Shell创建、备份、还原MySQL数据库创建数据库:mysql -uroot -p123456 -e "CREATE DATABASE IF NOT EXISTS yourDatabaseName DEFAULT CHARSET utf8 ...
  • Mysql UTF8utf8mb3 utf8mb4 字符集概述 字符集即是为了兼容各国的文字而做的编码,比如GB2312、GBK等,通用的编码我们用utf8。 mysql(5.7及8.0)里utf8实际是用3个字节存储即对应utf8mb3,而真正意义上的utf8...
  • 香港交易所提供的 OMD-C服务将数据以字节流的形式下发,其中汉字使用utf16编码,而 golang 程序则默认utf8编码,会造成解析乱码。 UTF-8 使用一至四个字节为每个字符编码,其中大部分汉字采用三个字节编码,少量不...
  • Java UTF-16字符编码

    2021-03-09 17:31:39
    小编典典在UTF-16版本中,由于插入了一个标记来区分Big Endian(默认)和LittleEndian,因此获得14个字节。如果指定UTF-16LE,则将获得12个字节(小尾数,不添加字节顺序标记)。编辑- 使用此程序查看由不同编码生成的...
  • UTF-8UTF-8编码是一种目前广泛应用于网页的编码,它其实是一种Unicode编码,即致力于把全球所有语言纳入一个统一的编码。前UTF-8已经把几种重要的亚洲语言纳入,包括简繁中文和日韩文字。所以在制作某些网站时...
  • mysql 创建数据库 utf-8

    2021-01-19 06:04:03
    MariaDB创建,更改,删除数据库命令1234567创建新的MySQL数据库创建具有特定字符集的MySQL数据库(UTF8)删除现有的MySQL数据库仅在不存在的情况下创建MySQL数据库仅当存在MySQL数据库时才会丢失更改db.opt的数据库...
  • python3出现utf-8 codec cant decode bytes in position114-115:invalid continuation byte怎么办首先检查文件编码是不是utf-8;如utf-8,检查是否有乱码。这个错误说这两个字节的内容无法按utf-8来解码。比如一些...
  • eclipse中UTF-8设置

    千次阅读 2021-03-17 13:01:22
    eclipse中UTF-8设置 1.windows->Preferences 打开"首选项"对话框; 2.然后,general->Workspace,右侧Text file encoding,选择Other,改变为UTF-8。 3.Web->打开,把CSS、HTML、JSP、JavaScript、 XML等...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,267,206
精华内容 1,706,882
关键字:

168utfutf