tinyXml处理UTF-8编码详解——写入和读取

以前写过一篇博文介绍tinyXml输出utf-8文档

tinyXml的特点是不对xml节点内容的具体编码处理,这一切都交给用户。因此tinyXml和字符有关的函数都是只接受char*的数据类型。
例如:

TiXmlElement *pRoot=new TiXmlElement("test");
pRoot->SetAttribute("name","名字");

上述代码产生的节点,如果用TiXmlDocument的SaveFile函数直接保存,只能是ANSI的本地编码(无论程序是否是unicode),即使TiXmlDeclaration指定为utf-8。一种方法是输出到TiXmlPrinter,将TiXmlPrinter.CStr()转换到utf-8编码的char*后保存。

char*在双字节编码下是一种很奇特的字符串,中文平台下的VC的编译器,char*可以存放GBK汉字,编译能正确识别字符,因为ASCII码的最高位为0,而GBK双字节字符的首字节最高位为1。

在使用utf-8字符串时,必须树立一个观念:utf-8应当只在传输时使用,不适合作为函数过程的处理对象。什么是传输场合?网络传输和文件读写。以文件读写为例,文件以utf-8编码存放,在读入到内存后,应当立刻转换为unicode宽字符串。程序的内部处理过程中只有unicode宽字符串。直到写入文件时,unicode宽字符串才转换为utf-8字符串。

utf-8字符串本身是变长字符串,并没有特定的数据类型。它是以char*形式存放,它的byte的表现不符合任何双字节编码,当成双字节编码处理会立刻出错。事实上,char*只是一个存放空间,用void*、unsigned char*本质上没有区别。(倘若你喜欢,甚至可以拿char*来存放unicode宽字符串,一次memcpy两个byte就是了)。

脱离双字节编码(如GBK)的tinyXml使用方法是存在的。
例如上述代码可以改为:

TiXmlElement *pRoot=new TiXmlElement("test");
CStringA UTF8Str=CW2A(L"名字",CP_UTF8);
pRoot->SetAttribute("name",UTF8Str);

UTF8Str变量名即是内含的char*字符串的起始指针。CW2A函数可以自己写一个代替,并不难实现。此时可以直接调用TiXmlDocument的SaveFile函数保存为无BOM的UTF-8文档。要保存为含BOM的UTF-8文档,仍然需要TiXmlPrinter,但此时不需要对TiXmlPrinter.CStr()进行任何处理。

XmlEntityTree=new TiXmlDocument;
TiXmlDeclaration *dec=new TiXmlDeclaration("1.0","utf-8","");
XmlEntityTree->LinkEndChild(dec);
TiXmlElement *pRoot=new TiXmlElement("test");
CStringA UTF8Str=CW2A(L"名字",CP_UTF8);
pRoot->SetAttribute("name",UTF8Str);
XmlEntityTree->LinkEndChild(pRoot);
TiXmlPrinter printer;
XmlEntityTree->Accept(&printer);

char UTF8BOM[3]={'\xEF','\xBB','\xBF'};

CFile theFile;
theFile.Open(_T("test.xml"),CFile::modeCreate|CFile::modeWrite);
theFile.Write(UTF8BOM,3);
theFile.Write(printer.CStr(),strlen(printer.CStr()));
theFile.Close();

tinyXml在加载xml文档时有一个标记,TiXmlDocument.LoadFile(TiXmlEncoding encoding);
这个标记没多大作用,无论设为TIXML_ENCODING_UTF8还是TIXML_ENCODING_LEGACY,读入的节点的数据类型一样是char*。
设为TIXML_ENCODING_UTF8标记的唯一作用是tinyXml会自动处理文档的BOM。

对于下面文档,怎样才能正确读取到TemplateStr节点的内容?很简单,在读取时进行转换就行。

<?xml version="1.0" encoding="utf-8" ?>
<config>
    <TemplateStr>中文</TemplateStr>
    <AutoFixCue>true</AutoFixCue>
    <AutoFixTTA>true</AutoFixTTA>
    <AcceptDragFLAC>true</AcceptDragFLAC>
    <AcceptDragTAK>true</AcceptDragTAK>
    <AcceptDragAPE>true</AcceptDragAPE>
</config>
TiXmlDocument *xmlfile= new TiXmlDocument(FilePath);
xmlfile->LoadFile(TIXML_ENCODING_UTF8);

TiXmlHandle hRoot(xmlfile);
TiXmlElement *pElem;
TiXmlHandle hXmlHandle(0);

//config节点
pElem=hRoot.FirstChildElement().Element();
if (!pElem) return FALSE;
if (strcmp(pElem->Value(),"config")!=0)
	return FALSE;

//TemplateStr节点
hXmlHandle=TiXmlHandle(pElem);
pElem=hXmlHandle.FirstChild("TemplateStr").Element();
if (!pElem) return FALSE;
CString TemplateStr=UTF8toUnicode(pElem->GetText());

UTF8toUnicode函数:

CString UTF8toUnicode(const char* utf8Str,UINT length)
{
	CString unicodeStr;
	unicodeStr=_T("");

	if (!utf8Str)
		return unicodeStr;

	if (length==0)
		return unicodeStr;

	//转换
	WCHAR chr=0;
	for (UINT i=0;i<length;)
	{
		if ((0x80&utf8Str[i])==0) // ASCII
		{
			chr=utf8Str[i];
			i++;
		}
		else if((0xE0&utf8Str[i])==0xC0) // 110xxxxx 10xxxxxx
		{
			chr =(utf8Str[i+0]&0x3F)<<6;
			chr|=(utf8Str[i+1]&0x3F);
			i+=2;
		}
		else if((0xF0&utf8Str[i])==0xE0) // 1110xxxx 10xxxxxx 10xxxxxx
		{
			chr =(utf8Str[i+0]&0x1F)<<12;
			chr|=(utf8Str[i+1]&0x3F)<<6;
			chr|=(utf8Str[i+2]&0x3F);
			i+=3;
		}
		/*
		else if() // 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
		{}
		else if() // 111110xx 10xxxxxx 10xxxxxx 10xxxxxx  10xxxxxx
		{}
		else if() // 1111110x 10xxxxxx 10xxxxxx 10xxxxxx  10xxxxxx 10xxxxxx
		{}
		*/
		else // 不是UTF-8字符串
		{
			return unicodeStr;
		}
		unicodeStr.AppendChar(chr);
	}

	return unicodeStr;
}

CString UTF8toUnicode(const char* utf8Str)
{
	UINT theLength=strlen(utf8Str);
	return UTF8toUnicode(utf8Str,theLength);
}

strlen取char*的长度等于字节数(不含终止符),不是utf-8字串的真正字符个数。

84次阅读 | 没有评论
2010年8月28日 | 归档于 技术, 程序

加奈~いもうと~ スペシャル サウンドアルバム

[CD] 加奈~いもうと~スペシャルサウンドアルバム
KANA

価格 2400円(税込)
発売日 2001/09/27
商品番号 AKCI-26000
JAN 4542114260001
メディア アルバム CD
組枚数 1

アーティスト/ キャスト
鬼頭利枝 (アーティスト)
二見直子 (アーティスト)
KANA (アーティスト)

内容
主人公と病弱の妹「加奈」との溢れんばかりの兄弟愛と家族愛を描いたアドベンチャーゲーム「加奈」。熱狂的ファンを持つこのゲームに待望のヴォーカルアルバム!劇中使用の全ヴォーカル曲(3曲)に、ゲームの世界観をより深くイメージ出来る新規書き下ろしの5曲をプラス!

収録曲
1 白い季節(REMIX Ver.)
2 風に乗って 鬼頭利枝
3 Dream a dream 二見直子
4 Believe~つぶらな瞳~
5 Snowflake~思い出のの果て、雪は降る~ 二見直子
6 はじまりのさよなら 鬼頭利枝
7 あなたに出会えてよかった
8 あなたへ(REMIX Ver.)
9 あなたへ~機械式オルゴールバージョン(from Project”KANA ORGEL”)

阅读全文…

41次阅读 | 没有评论
2010年8月27日 | 归档于 音楽
标签: , , , ,

自制Wordpress标签云页面

侧栏的标签云中的tag数量毕竟有限。于是很久前就想自制一个标签云页面。

复制所用主题下的page.php,命名tags.php;
在tags.php头部添加

<?php
/*
Template Name: tags
*/
?>

将tags.php中的<?php the_content(); ?>替换为<?php wp_tag_cloud(’smallest=12&largest=40&unit=px&number=500′);?>
保存,上传至所用主题下的目录

后台添加新页面,模板选用tags。OVER

wp_tag_cloud是wp自身提供的函数,smallest是最小的字号(相关主题数最少),largest是最大的字号(相关主题数最多),unit是单位,number是显示的tag的最大数量

但对于blocks主题,还需要指定新的样式表。默认的content样式tag由于大小不一会重叠。
在style.css添加新样式

.tags-cloud{
	background:#FFF;
	padding:10px 11px 10px;
	overflow:hidden;
}

将wp_tag_cloud所在的div的class修改为tags-cloud。

余因为关闭了评论,所以同时移除了和评论相关的代码
最终的tags.php

<?php
/*
Template Name: tags
*/
?>

<?php get_header(); ?>

<?php if (have_posts()) : the_post(); ?>
	<div class="post">
		<h3 class="title"><?php the_title(); ?></h3>

		<div class="tags-cloud">
			<?php wp_tag_cloud('smallest=14&largest=46&unit=px&number=500');?>
			<div class="fixed"></div>
		</div>

		<div class="meta">
			<div class="act">
				<?php edit_post_link(__('Edit', 'blocks'), '', ''); ?>
			</div>
			<div class="info">
				<?php
					if (function_exists('the_views')) the_views(true, '', '');
				?>
			</div>
			<div class="fixed"></div>
		</div>
	</div>

<?php else: ?>
	<div class="block">
		<div class="content small r">
			<?php _e('Sorry, no posts matched your criteria.', 'blocks'); ?>
		</div>
	</div>

<?php endif; ?>

<?php get_footer(); ?>
56次阅读 | 没有评论
2010年8月21日 | 归档于 技术

アカイイト 本体 + 专用模拟器

平台:PS2
发行:2004.10.21
类型:和風伝奇ADV
出品:SUCCESS

原画:Hal(ハル)
脚本:麓川智之
音乐:MANYO(Little Wing)
OP:霜月はるか/riya
ED:riya/霜月はるか

STORY:
この夏、わたしはたったひとりの家族だったお母さんを亡くして――
――遺産として残されたお父さんの実家を見るために、長い道を行く電車に乗り――
とても不思議な夢を見た
思い出せない赤い記憶
群れ飛ぶ蒼い光りの蝶
そして、悲しい目をした懐かしいあのひと――
わたしの生まれ故郷でもある経観塚
そこでわたしは誰かと出会い、そこでわたしは誰かと別れる
過去と現在(いま)、夢と現(うつつ)、わたしの記憶とわたしの血――
縁(えにし)の糸が絡まりあい、寄り合わさってひとつの絵を成し――
運命の輪が廻りだす

声优阵容其实很强大,松来未祐、皆口裕子(Clannad伊吹公子,弱气受声线)、真田アマミ(K-ON山中老师)、钉宫理惠、能登麻美子等
阅读全文…

40次阅读 | 没有评论
2010年8月21日 | 归档于 红线

アカイイト OST + Image CD「いつかのひかり」


アカイイト オリジナルサウンドトラック
ゲーム·ミュージック

商品番号: KICA-1336
メディア: アルバムCD
组枚数: 1
発売日: 2004/11/03
価格: 2500円(税込)

アーティスト/ キャスト
霜月はるか (アーティスト)  riya (アーティスト)
内容
女の子同士の恋愛を描いた和風伝奇ホラーアドベンチャーゲーム「アカイイト」のサウンドトラック。音楽は数々の人気美少女ゲーム音楽を手掛ける”まにょっ”が担当。Riyaと霜月はるかのツインボーカルによるオープニングテーマ、エンディングテーマも収録。ジャケットは描き下ろし。

収録曲
1 廻る世界で
2 光射す場所
3 夏に咲いた日
4 高い空を見上げて
5 風の回廊
6 ホンニャカモンマカ
7 Wheel of Fortune
8 時の雫
9 夢の苧環
10 凍月
11 いつかのひかり
12 抱きとめた想い
13 古唄
14 蟠
15 禍つ疾風
16 怒涛
17 昏き陽炎
18 底知れぬ闇へ
19 去り逝く者、残される者
20 泡沫
21 廻る生命
22 旅路の果て

―――――――――――――――――――――――――――――――――――――――――――――

SUCCESS – アカイイト 『いつかのひかり』
HNMP-0002 2007/12/29(C73)イベント限定贩売

―――――――――――――――――――――――――――――――――――――――――――――

01.いつかのひかり
02.泡沫
03.いつかのひかり (Instrumental)
04.泡沫 (Instrumental)
05.廻る世界で (Instrumental)
06.旅路の果て (Instrumental)

01.いつかのひかり
02.泡沫
歌:霜月はるか 作词:丽川智之 作曲/编曲:MANYO (Little Wing)

―――――――――――――――――――――――――――――――――――――――――――――

[SUCCESS] アカイイト Original Soundtrack (tta+cue) 341M
[SUCCESS] 霜月はるか – アカイイト「いつかのひかり」(C73)(tta+cue+png) 258M

C73发售的印象CD是将BGM Vocal化,由霜月演唱,同时收录OST中没有的OP、ED的off vocal
阅读全文…

95次阅读 | 2 条评论
2010年8月21日 | 归档于 红线, 音楽

修正统计插件statpresscn的一个写UTF-8数据的错误

博客的访问统计插件使用的是statpresscn,从一开始使用163的api解析ip地址,就发现写入会出错,当时不以为意,随便改为其他的api(返回的地址一般都是空串)。直到昨天小烈留言,才发现原来用户名为中文字符同样也会出错。于是决心解决它。

WordPress database error: [Incorrect string value: '\xE7\x83\x88\xE4\xB9\x8B...' for column 'user' at row 1]
INSERT INTO blog_wp_statpressCN (date, time, ip, urlrequested, statuscode, ptype, pvalue, agent, referrer, search,nation,os,browser,searchengine,spider,feed,user,timestamp) VALUES (‘20100820′,’00:25:24′,’125.46.23.194′,’/index.php/gbook’,”,’page’,’103′,’Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8 (.NET CLR 3.5.30729)’,’http://kuyur.info/blog/index.php/archives/category/ongaku’,”,”,’Windows XP’,’Firefox 3′,”,”,”,’烈之斩’,’1282263924′)

从小烈反馈以及余自测的错误来看,是UTF-8字符要写入数据库时出错。访客在留言后,cookies自动记录用户名,访客再访问页面,statpresscn这时候采集的不再是ip,而是用户名。“\xE7\x83\x88\xE4\xB9\x8B”是“烈之”的UTF-8编码。余的博客是UTF-8编码,表单提交到mysql的字符类型也是UTF-8,但博文写得好好的,没理由是服务器那边的错误。将数据库进行备份,下载回来一看,发现表blog_wp_statpress的CHARSET居然是latin1。错误正是出在这里。(建议statpresscn作者在创建数据表时按照blog设定的编码创建)

修改表的字符集、user字段的CHARACTER SET为UTF-8,用中文用户名留言后的错误消失。将解析ip的api改回163,修改nation字段的CHARACTER SET为UTF-8,博文最开始提到的错误也消失。

以防万一,将tinytext和text类型的字段都改成了UTF-8。

ALTER TABLE blog_wp_statpress default CHARACTER SET utf8;
ALTER TABLE blog_wp_statpress modify user tinytext CHARACTER SET utf8;
ALTER TABLE blog_wp_statpress modify urlrequested text CHARACTER SET utf8;
ALTER TABLE blog_wp_statpress modify agent text CHARACTER SET utf8;
ALTER TABLE blog_wp_statpress modify referrer text CHARACTER SET utf8;
ALTER TABLE blog_wp_statpress modify search text CHARACTER SET utf8;
ALTER TABLE blog_wp_statpress modify nation tinytext CHARACTER SET utf8;
ALTER TABLE blog_wp_statpress modify os tinytext CHARACTER SET utf8;
ALTER TABLE blog_wp_statpress modify browser tinytext CHARACTER SET utf8;
ALTER TABLE blog_wp_statpress modify searchengine tinytext CHARACTER SET utf8;
ALTER TABLE blog_wp_statpress modify spider tinytext CHARACTER SET utf8;
ALTER TABLE blog_wp_statpress modify feed tinytext CHARACTER SET utf8;
ALTER TABLE blog_wp_statpress modify ptype tinytext CHARACTER SET utf8;

可以将上述sql语句保存sql文件,在mysql中用source命令执行。

129次阅读 | 1 条评论
2010年8月20日 | 归档于 技术
标签: ,

アカイイト 游戏脚本文件分析及脚本提取

アカイイト,中文译名红线,success社05年出品的PS2平台上的和风百合游戏。音乐由Little WING负责,神作。
这是官网:http://www.success-corp.co.jp/software/ps2/akaiito/

红线的脚本文件是PS2光盘或者镜像里的SCRIPT\SCRIPT.AFS文件。其余文件的内容凭文件名也很好猜。BGM.AFS是背景音效,CELDATA.AFS是CG,VOICE.AFS是语音。NULL.000和NULL.001则是两个垃圾文件,每个大小512M,倘若制作汉化镜像应当去掉。

SCRIPT.AFS中的脚本文字是按SHIFT-JIS编码以非加密方式存放
下载地址:http://unicue.googlecode.com/svn/trunk/Files/Akaiito/SCRIPT.AFS
下载回来后可以用notepad++打开,就能发现脚本是一段一段的嵌套在非脚本字符中,非脚本字符有很多是不能显示的ASCII控制字符,并有大量0×00也即终止符,因此刚开始时不能当作字符串来处理。

不过脚本字符和干扰字符所属区段不重合,因此非常适合编写程序来处理,差不多六个函数搞定。

第一步,剔除控制符等干扰字符。
将整个文件都当成SHIFT-JIS编码的文本进行检测,原理和GBK、Shift-JIS、BIG5编码检测算法提及的检测算法是非常像的,只不过这里的检测遇到异常字符不终止继续而已。
剔除策略是,遇到0×00~0×1F用空格替代;遇到0×7F,用空格替代;半角假名区的字符事实上没有出现(倘若余错了,请联系纠正);遇到0×8000~0×813F,用两个空格代替;遇到SHIFT-JIS中0×8140~0xFFFF中不存在的字符(使用到了映射表文件jis2u-little-endian.map进行检查),用两个空格取代。

在第一步后,文本已经是一个正经的字符串,这时候可以用正则表达式进行后续处理。

第二步,删除$w、$s、单个ASCII可见字符(前后均有空格),有限状态自动机模型。第二步后文本已经基本可读。

第三步,需要将文本分割成章节标题和脚本内容两部份分别处理。#cr0在游戏中是回车的转义符,章节标题字串的#cr0是替换为换行,脚本内容字串的则是删除掉(脚本内容字串的最后部分需要灵活处理)。最后的工作是将长空格串(三个连续空格以上)替换为换行。自写代码的处理到此结束。在去除空格串后文本由6M多缩小到1M多。

第四步是合并文本,并将SHIFT-JIS编码转换为UTF-8(使用ANSI2Unicode,本想调用toUnicode.h实现的),用notepad++的正则表达式替换功能删除数字编号(应该不会删错吧?自写程序会鉴别前后是否有换行。偷懒了),并将多余的回车换行删掉,最后剔除少量错误。

step3的脚本:http://u.115.com/file/f0f1b09c22,未删除数字的或许对分章有意义

程序:http://unicue.googlecode.com/svn/trunk/

最终脚本在此:akaiito_script_step4.pdf
共计57万字

74次阅读 | 没有评论
2010年8月20日 | 归档于 程序, 红线

玩红线学日语(一):アカイイト -それは物語の予兆-

一緒に日本語を勉強しましょう。

日语学到现在,感觉词汇成为瓶颈。如何记住海量的词汇及其准确的假名拼写,是余目前遇到的大难题。拼写中的长音和促音让余很想撞墙。但好像又没有太好的方法。传说如果能一直反复练习,比如和日本人文字聊天之类的,很快就记住了。每天将一篇文章打几十遍也是一种反复练习,游戏脚本或轻小说是一个比较好的对象。

前段时间将红线(アカイイト)的游戏脚本提取并整理了出来,只剩下章节结构未明。除开一些生僻词汇,红线脚本的生词还是很日常的,适合练习。

第一课:それは物語の予兆。对象:三级以上(具备一定语法基础)

―――――――――――――――――――――――
◇それは物語の予兆
―――――――――――――――――――――――
木。
たくさんの木。
高く伸びる木々それぞれが、好き放題に枝を伸ばし、空のほとんどを覆い隠してしまっている。

深い――林か森か。幹の太い古木が立ち並び、たけのある草が生い茂る狭い道を、わたしは走っている。
――――
――振り返る。

瓦の並ぶ屋根が見えた。
時代劇で見るような、立派な構えの門はないけれど、それは見事なお屋敷だった。
平屋の大きな日本家屋。
離れに見えるのは蔵かもしれない。
こういう屋敷に住んでいる人たちを、由緒正しい旧家とでも言うんだろうか。

涼しげな鈴の音に、わたしは前へと向き直る。

ぐっと誰かに手を引かれ、わたしはさらに足を速める。

道の勾配がだんだん急になる。
ああ、ここは山なんだ。
手を引かれるままに、わたしは山道を登る。

舗装されていなかったとはいえ、まだ道らしい道だった道を外れて、わたしたちは草を分けるようにして進む。

速く、早く、はやく、はやく――
わたしを引く手が強くなる。
誰かに追いかけられでもしているのか。

何をそんなに急いでいるんだろう。

足元の草を踏みしめて急ぐ。

ざっ、ざっ、ざっ、ざっ。

ざあっ――

急に視界が開けた。
おそらく山の中腹あたり。
そこには見上げるほどの大きな――
数百の年月を雨風とともに過ごしたといった趣のある、大きな大きな木が根を下ろしていた。
他の木はこの木に遠慮しているのか、あたりは少し開けている。

ざあっ――
通り過ぎる風に、木に咲く花がゆらりと揺れ。
この景色には見覚えがあった。
そこがどこかは知らないけれど。
テレビか映画で見たんだろうか。
いや、違う。
そうじゃないということは、わかっていた。
これは。
この景色は。
これはわたしの――

『たいせつなひとが、いなくなってしまった』

風にもがれた花びらが、蝶のようにひらひらと舞っている。
奇妙な既視感と喪失感。
何だろう、この感覚は。
そして今まで気にしていなかったけど。

――この景色は。この世界は。

赤いインクを落とした水槽越しに見る景色のように、重くて、遠くて、揺らめいていて。

いったん気になりだすと、気になってしようがなくなってしまう。

見るほどに、赤は濃くなり、視界を遮る。

わたしの邪魔をするように、赤は世界を遠くへ沈めていく。

それでも見ようと瞳を凝らすと――

今までにない鮮烈な赤が目の奥を焼いた。

駄目――
警告されているような気がした。
駄目――
呼ばれている。誰かに呼ばれている。
駄目――
ここにいてはいけないんだ。
向こうに行ってはいけないんだ。
するとわたしは戻るほかなく――

生词表

———————————-
それは物語の予兆
———————————-
物語 ものがたり 故事
予兆 よちょう
木 き 木々 きぎ
伸びる のびる 【自】 延伸
放題 ほうだい 自由地
枝  えだ
伸ばす のばす 【他】
覆い おおい <名>
隠す かくす 覆い隠す おおいかくす
深い ふかい
林 はやし 森 もり
幹 かん 樹干
古木 こぼく
立ち並ぶ たちならぶ 并排
たけ =物の高さ
草 くさ
生い茂る おいしげる 繁茂
狭い せまい
走る はしる 【五】 跑
振り返る ふりかえる 回頭看
瓦 かわら
並ぶ ならぶ 【自】
屋根 やね 屋頂
時代劇 じだいげき 歷史劇
立派 りっぱ
構え かまえ 構造
門 かど
見事 みごと <形動> 好看
屋敷 やしき 宅邸
平屋 ひらや 平房
家屋 かおく
蔵 くら・ぞう
由緒 ゆいしょ 來由
旧家 きゅうか 歷史悠久的家系
涼しい すずしい
げな =~らしい・ようだ
鈴 すず
向き直る むきなおる (なになに)と向き直る 朝著xx方向過去
ぐっと 使勁地
引かれる ひかれる =引かされる 「引く」 被拉著
更に さらに
速める はやめる 加速
勾配 こうばい 斜坡
急に きゅうに
山道 さんどう・やまみち
登る のぼる
舗装 ほそう
外れる はずれる =離れる(はなれる)
分ける わける 【他】 分かれる わかれる 【自】
進む すすむ
追いかける おいかける
急いで いそいで <副> 急ぐ いそぐ
足元 あしもと 腳下
踏みしめる ふみしめる 用力踩
視界 しかい 視界が開(ひら)ける
開ける ひらける 【自】 開闊  開ける あける 【他】 打開
恐らく おそらく 恐怕
中腹 ちゅうふく
辺り あたり 附近
見上げる みあげる 仰視
数 すう
年月 ねんげつ
雨風 あめかぜ
共に ともに ~とともに
過ごす すごす
趣 おもむき 韻味
根 ね
下ろす おろす 根を下ろす 扎根
他 ほか
通り過ぎる とおりすぎる 越過
ゆらり 輕輕搖動 ゆらりと~
揺れ ゆれ
見覚え みおぼえ 仿佛見過
もぐ もがれる
花びら はなびら 花瓣
ひらひら 飄揚 ひらひらと舞う
奇妙 きみょう
既視感 きしかん
喪失感 そうしつかん
感覚 かんかく
インク ink
落とす おとす
水槽 すいそう
越し ごし ~越しに見る 例:眼鏡越しに見る
重い おもい
遠い とおい
揺らめく ゆらめく
濃い こい
遮る さえぎる
邪魔 じゃま 妨礙
沈める しずめる 【他】 把~沉沒
瞳 ひとみ
凝らす こらす 集中
鮮烈 せんれつ 強烈
奥 おく 深处、盡頭
駄目 だめ
警告 けいこく
呼ばれる よばれる 呼ぶ
向こう むこう 對面

93次阅读 | 没有评论
2010年8月18日 | 归档于 红线

刺身和寿司

今天第一次吃生鱼片,确切的说法是刺身。不单是海鱼的肉能做刺身,虾、鱿鱼、章鱼、马肉、牛肉、牛肝等都能做刺身
手机拍的照片,效果只能将就了

武藏日本料理店

牛肝刺身(差点还点了盘马肉刺身)。一开始感觉很恐怖,但实际上味觉并不像想象中一样,沾了清油和盐,基本没有腥味,咀嚼起来既脆又柔软(有点像木耳),不过余还是咀嚼了几口赶紧吞了。只吃了一片

海鲜刺身拼盘。柠檬片左边是山葵泥,上边的就是金枪鱼,往右边过来是章鱼。远处是海鲜酱油,酱油的味道很鲜。尝了一片章鱼和一片金枪鱼。章鱼还好,有点像牛肉干(汗),金枪鱼咬了半口差点就吐出来,很肥厚,门牙切下去的触感不能形容,剩下的是用紫苏叶包住,夹带萝卜丝,才吞了下去

卷寿司、握寿司和鱼子寿司。其实还有一盘卷寿司,18个,没有拍摄。中间夹黄瓜的没什么味道,吃夹金枪鱼的寿司由于沾的山葵泥太多,辛辣味一下子冲上鼻子。寿司因为带有米饭,咀嚼生鱼肉的心理感觉没那么强烈。握寿司就只吃了个半熟的虾肉寿司和章鱼肉寿司。一盘寿司中最贵的就是那个鱼子寿司了,尝了几颗鱼子,蹦蹦的很有趣,化了之后感觉很像油,来整个余怕是会受不了。姜片很好吃(汗

饮的冷酒(也即是冰镇的清酒)是沈阳产的,很淡,一杯干完没什么问题,听说味道和日本的还是有差异。之后又来了个排骨盖饭定食,差点被撑死。这里的盖饭比吉野家的要实惠多了。

出来看到很有特色的一栋建筑,听说是日治时期的

之后去火车站附近的商场逛了一圈。卖海鲜的摊档。

116次阅读 | 没有评论
2010年8月7日 | 归档于 私语

掠影:八达岭长城

越过长城,走向世界
Across the Great Wall we can reach every corner in the world.

7月21日,老爸陪余去爬八达岭。坐北京北到延庆的柴油动车组,二等座的票价14元,座位很舒适,空间很大

进入山区,火车一直在爬坡

路过居庸关

这样看去,也相当的崎岖

八达岭高速在堵车

出京方向,停靠的是青龙桥新站,返京时,停靠的是青龙桥老站。老站才是詹天佑的设计

查看大图

青龙桥新站。其实,余觉得在这里上班很不错,抬起头就是青色的山峰和灰色的长城。传说在青龙桥下车可以去爬残长城

终于来到长城的脚下。北坡方向

左边的山峰应该是附近的最高点

回望南坡。最低点是关城,南北两端从关城延伸

在此处断开。古代的工艺还是力有所不及

即将到达北坡最高点,看见了缆车

山峰非常陡峭,长城如果能修到那就牛叉了

最高点,北八楼不给上了。GPS测量的高度是872m

刻纪念牌的小商贩。好像是十块钱一个小的,二十块钱一个大的。最高点的生意明显比下面的好许多

爬完北坡,转回来再爬南坡。南坡的人很少,可能也跟时间有关。远处动车从青龙桥新站开出

回望北坡

砖上的刻字。最左上的那位功力深厚

人很少

真的非常少

少到可以拍到完全没有人的照片。这应该是南六楼

从终点俯瞰没修复的残长城

南坡终点。有刻石碑画的商贩,女老板英语能扯好一些,成功忽悠了一个老外买了块大的,100人民币+5张1欧元

八达岭处于飞机降落的航线上,飞机非常频繁

再回到关城,遥拍想摸个一筒,就摸个一筒。大概是奥运的公路自行车赛从此经过

回京。傍晚的八达岭车站。其实快的话,可以赶得上下午三点的火车回去

96次阅读 | 没有评论
2010年8月5日 | 归档于 私语
标签: ,