utf-8中文字数统计

在做下面这个试验的过程中出现了一些错误。现在仍然没有改正,所以建议先不要按照这种方法进行尝试,如果想试用utf-8转换的话,要先试用连接中的方法。

最近在做微博字数统计的时候,使用java写程序将获取的微博数据写成了utf-8格式,这让我在以后的程序中受尽苦头,utf-8是一种组合字符,其中英文占一个字符,而中文占三个字符。这样就在字数统计中遇到了很大的困难。但是借助于http://blog.csdn.net/chrisniu1984/article/details/7359908所说的方法还是将问题解决。

程序如下

#include <iostream>
#include <fstream>
#include <string>
#define utf8_asc(byte) (((unsigned char)(byte)>=0x00)&&((unsigned char)(byte)<=0x7f))
#define utf8_first(byte) (((unsigned char)(byte)>=0xc0)&&((unsigned char)(byte)<=0xfd))
#define utf8_other(byte) (((unsigned char)(byte)>=0x80)&&((unsigned char)(byte)<=0xbf))
using namespace std;
int ceil(int num){
	if (num&&0x01) return (num>>1) + 1;
	else return (num >> 1);
}
void count_text(string &file_name, long *count){
	ifstream fin;
	fin.open(file_name.c_str(), ios::in);

	if (!fin){
		cout << "file open error" << endl;
		return ;
	}
	else {
		cout << "file open ok" << endl;
	}
	string s;
	getline(fin, s);
	while (getline(fin, s)){
		getline(fin, s);
		int co = 0, co2 = 0;
		for (int i = 0; i < s.size(); ++i){
			if (utf8_first(s[i]))
				co++;
			if (utf8_asc(s[i]))
				co2++;
		}
		count[co+ceil(co2)] ++;
		getline(fin, s);
	}
	fin.close();
}

int main(){
	
	string file_name2 = "e://weibodata_2.txt";
	string file_name1 = "e://weibodata_5.txt";
	string file_name = "e://datatest.txt";
	long count[560] = {0};
//	count_text(file_name2, count);
	count_text(file_name, count);
	ofstream fout("e://count_number.txt");
	for (int i = 0; i < 560; ++i)
		fout << count[i] << endl;
	fout.close();


	return 0;
}
这个程序不知道是不是对的。在读文件数据之前要提前读一行,这让我很无解,不知道为什么要这么做。在不停的debug中浪费了很多的时间,但是后来想一想这种工作真的美什么必要去做,但是既然想到这么一个问题就好好把他解决吧。心情不爽,静不下来。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要将Excel转换为UTF-8编码的文本文件,可以按照以下步骤进行操作: 1. 首先,打开Excel文件并选择需要转换的数据。 2. 按住Shift键,选中从需要转换的数据的起始单元格到末尾单元格的区域。 3. 按下Ctrl+C复制选中的数据。 4. 新建一个记事本文件,并将其另存为UTF-8的格式。 5. 打开UTF-8格式的记事本文件,并按下Ctrl+V粘贴之前复制的数据。 这样,你就成功地将Excel数据转换为UTF-8编码的文本文件了。请注意,这种方法只是将数据内容转换为UTF-8编码,不会改变Excel文件本身的格式。 引用: 阅文时长| 0.07分钟字数统计| 128字符主要内容| 1、引言&背景 2、声明与参考资料 『Excel·将Excel数据源转成编码为UTF-8的文本文件』编写人| SCscHero 编写时间| 2021/5/30 PM4:8文章类型| 系列完成度| 已完成座右铭每一个伟大的事业,都有一个微不足道的开始。 一、引言&背景完成度:100% a) 应对问题 Excel中如何将数据转换为UTF-8的文本文件呢? b) 应用场景 Excel文件需要转换成UTF-8的文本格式的文件使用。 c) 解决步骤 新建一个记事本文件,内容为空,另存为UTF-8的格式。选中Excel中的A1单元格,按住Shift键,选中下方末端的单元格。即选中Excel单个工作表中的全部数据。按Ctrl C复制。将UTF-8格式的记事本文件打开,Ctrl V粘贴。 二、声明与参考资料完成度:100% 原创博文,未经许可请勿转载。 如有帮助,欢迎点赞、收藏、关注。如有问题,请评论留言!如需与博主联系的,直接博客私信SCscHero即可。。 引用:今天要和大家分享的是,Excel如何将数据内容导出为UTF-8的文本文件?如下图所示的表格内容,我们都知道文本导入到网页中大多会以乱码显示,是因为网页多以utf-8对汉字进行编码,所以…… 。 引用:[code][removed] function chinesefromutf8url(strutf8) { var bstr = “”; var noffset = 0; // processing point on strutf8 if( strutf8 == “” ) return “”; strutf8 = strutf8....。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值