from : http://www.cnblogs.com/chagel/archive/2009/02/01/1381820.html   附評(píng)論

          最近在論壇閑逛,先后參與了兩題算法趣味題目。

          1. 題目1是要求算一任意長(zhǎng)度字符串中不同的字符以及它的個(gè)數(shù)。
          2. 題目2是把一段字符串用“右起豎排”的古文格式輸出。

          題目難度不大,都是針對(duì)字符串的操作,邏輯比較簡(jiǎn)單,靈活在對(duì)不同語(yǔ)言、語(yǔ)法的掌握程度。(原文分別在:12。)

          看了大家用C++、C#、Java等語(yǔ)言的實(shí)現(xiàn),總感覺(jué)牛刀殺雞太麻煩,有興趣的朋友可以自己寫(xiě)寫(xiě)看或者直接看原文的網(wǎng)友回復(fù)。我最近一段時(shí)間Python寫(xiě)的比較多,讀到這些題目時(shí)候,就有一種躍躍欲試的沖動(dòng)。因?yàn)槲抑烙肞erl,Python,Ruby等動(dòng)態(tài)語(yǔ)言來(lái)做這類題目,會(huì)是非常理想的。后來(lái)我做了這兩道題目,結(jié)果也令人滿意,代碼之簡(jiǎn)潔保持在所有答案的前列。

          先看第一題Python解答:

          dic = {}
          for s in "abcdefgabc":
          dic[s] = 1 if s not in dic else (dic[s]+1)
          print '\n'.join('%s,%s' % (k, v) for k, v in dic.items())

          輸出結(jié)果:

          a,2
          c,2
          b,2
          e,1
          d,1
          g,1
          f,1

          Python的四行代碼分別做了dictionary的聲明,賦值,字符串的遍歷,以及高效拼接。

          如果還沒(méi)有看出它的簡(jiǎn)潔和強(qiáng)大的話,請(qǐng)看第二題的解法:

          def main(offset=6):
              string = u'靜夜思 李白床前明月光,疑似地上霜。舉頭望明月,低頭思故鄉(xiāng)。090131'
          a = [[' ']*offset for row in xrange(offset)]
          for i in xrange(offset):
          for j in xrange(offset):
          a[i][j] = string[j + i*offset]
          b = [[r[col] for r in a[::-1]] for col in xrange(len(a[0]))]
              print '\n'.join([u'┊'.join(unicode(c) for c in row)for row in b])

          輸出結(jié)果:

          0┊低┊舉┊疑┊床┊靜
          9┊頭┊頭┊似┊前┊夜
          0┊思┊望┊地┊明┊思
          1┊故┊明┊上┊月┊
          3┊鄉(xiāng)┊月┊霜┊光┊李
          1┊。┊,┊。┊,┊白

          這題如果用C#等實(shí)現(xiàn),代碼要在20行以上。下面我簡(jiǎn)單介紹一下這幾行代碼:

          1. 第3行,在Python里面二維“數(shù)組”通過(guò)嵌套list來(lái)實(shí)現(xiàn),這里初始化一個(gè)6行6列的二維數(shù)組;
          2. 第7行,我們把“矩陣”順時(shí)針旋轉(zhuǎn)了90度(行列置換,并且對(duì)置換后的行首尾對(duì)調(diào)-這里的::-1就是用來(lái)置換一個(gè)list的trick);
          3. 最后一行,我們把數(shù)組里的每行中元素,每行之間分別用兩個(gè)不同字符拼接起來(lái)。join方法以及for..in..語(yǔ)句在python中是相當(dāng)常見(jiàn)的用法。

          通過(guò)這兩題,我們看到Python在處理字符串時(shí)候的十分靈活方便,雖然一種語(yǔ)言的好壞不應(yīng)完全靠是否簡(jiǎn)潔來(lái)衡量,但對(duì)于我個(gè)人而言,Python是目前我用過(guò)的最好的語(yǔ)言。而且對(duì)于趣味題來(lái)說(shuō),這不就是我們解題的趣味所在嗎?

          Tag標(biāo)簽: python
          Posted on 2009-02-01 07:01 Chagel 閱讀(1328) 評(píng)論(14)  編輯 收藏 網(wǎng)摘

          Feedback

          #1樓    回復(fù)  引用  查看    

          2009-02-01 09:50 by Jeffrey Zhao      
          從CSDN的趣味題學(xué)C# 3.0
          http://www.cnblogs.com/JeffreyZhao/archive/2009/02/01/1381867.html

          #3樓    回復(fù)  引用  查看    

          2009-02-01 10:24 by JimLiu      
          老趙的代碼不錯(cuò),我改進(jìn)下
          第二個(gè)
          static void Count(string message) {
          message
          .GroupBy(c => c)
          .ToList()
          .ForEach(p => Console.WriteLine("{0}, {1}", p.Key, p.Count()));
          }

          這樣似乎更爽一些,呵呵

          #4樓    回復(fù)  引用  查看    

          2009-02-01 10:26 by Jeffrey Zhao      
          @JimLiu
          那個(gè)select的確可以省,我是習(xí)慣于先搞出數(shù)據(jù)來(lái),然后添加行為,而不是在行為里繼續(xù)計(jì)算

          #5樓    回復(fù)  引用  查看    

          2009-02-01 10:34 by JimLiu      
          @Jeffrey Zhao
          呵呵,是因?yàn)橄萻elect了好重復(fù)用吧,習(xí)慣問(wèn)題,我的喜歡就根據(jù)題目變化。

          #5樓    回復(fù)  引用    

          2009-02-01 11:59 by young5335 [未注冊(cè)用戶]
          a="abcdefgabc"
          myset=set(a)
          for s in myset:
          print(str(a.count(s))+" "+s)

          2 a
          2 c
          2 b
          1 e
          1 d
          1 g
          1 f

          #6樓    回復(fù)  引用    

          2009-02-01 13:24 by young5335 [未注冊(cè)用戶]
          import math
          colSize=6
          string="靜夜思 李白床前明月光,疑似地上霜。舉頭望明月,低頭思故鄉(xiāng)。0901311"
          iLen=math.ceil(len(string)/colSize)
          l=list(reversed(([string[i*colSize:i*colSize+colSize].ljust(colSize,' ') for i in range(0,iLen)])))
          for i in range(colSize):
          for j in range(iLen):
          print(l[j][i],end=" ")
          print()

          python語(yǔ)法我真的快忘光光了.

          #7樓    回復(fù)  引用    

          2009-02-01 13:28 by young5335 [未注冊(cè)用戶]
          要改成跟樓主一樣的分隔符,把end="┊"

          #8樓    回復(fù)  引用    

          2009-02-01 13:44 by young5335 [未注冊(cè)用戶]
          PHP的:
          $a="abcdefgabc";
          $result=count_chars($a,1);
          array_walk($result,create_function('$v,$k','echo chr($k)." ".$v."<br/>";'));

          a 2
          b 2
          c 2
          d 1
          e 1
          f 1
          g 1

          #9樓    回復(fù)  引用  查看    

          2009-02-02 00:00 by Icebird      
          JavaScript:

          var s = "hello";
          var arr = s.split('');
          var o = {};
          var c;
          for (var i = 0; i < arr.length; i++)
          {
          o[arr[i]] = (o[arr[i]] ? o[arr[i]] : 0) + 1;
          }

          var result = "";
          for (var p in o)
          {
          result += p + ", " + o[p] + "\r\n";
          }

          alert(result);

          #10樓    回復(fù)  引用    

          2009-02-02 10:22 by 賴勇浩 [未注冊(cè)用戶]
          >>> from collections import defaultdict
          >>> adict = defaultdict(int)
          >>> for s in "abcdefgabc":
          ... adict[s] += 1
          ...
          >>> print '\n'.join('%s,%s' % (k, v) for k, v in adict.iteritems())
          a,2
          c,2
          b,2
          e,1
          d,1
          g,1
          f,1

          #11樓    回復(fù)  引用    

          2009-02-02 11:21 by young5335 [未注冊(cè)用戶]
          a="abcdefgabc"
          b={}
          a.each_char { |x|b.store(x,a.count(x)) }
          b.each {|k,v| puts k+" "+v.to_s}

          #12樓    回復(fù)  引用    

          2009-02-02 15:18 by hehehe [未注冊(cè)用戶]
          試試Groovy:

          ('abcdefgabc' as List).groupBy{it}.each{k, v -> println "$k, ${v.size()}"}

          #13樓    回復(fù)  引用    

          2009-02-02 15:37 by hehehe [未注冊(cè)用戶]
          試試Groovy(第二題):

          def a = '床前明月光 疑似地上霜 舉頭望明月 低頭思故鄉(xiāng)'.tokenize(' ')

          5.times{row ->
          println a.collect{it[row]}.reverse().join('|')
          }


          低|舉|疑|床
          頭|頭|似|前
          思|望|地|明
          故|明|上|月
          鄉(xiāng)|月|霜|光

          #14樓    回復(fù)  引用    

          2009-02-02 16:04 by zealtea [未注冊(cè)用戶]
          txt = u"靜夜思 李白床前明月光,疑似地上霜。舉頭望明月,低頭思故鄉(xiāng)。"
          offset = 6

          a =[i[::-1] for i in zip(*[txt[i:i+offset] for i in range(0, len(txt), offset)])]

          for i in a:
          print "|".join(i)
          posted @ 2009-02-04 10:45 小馬歌 閱讀(270) | 評(píng)論 (0)編輯 收藏
           
          from : http://www.cnblogs.com/slfyeye/articles/1098890.html

          Linux是GNU/Linux的縮寫(xiě),通常指各種Linux發(fā)行版的通稱。
          常見(jiàn)的Linux廠家主要有Redhat/Novell等。

          Redhat有兩大Linux產(chǎn)品系列,其一是免費(fèi)的Fedora Core系列
          主要用于桌面版本,提供了較多新特性的支持。
          另外一個(gè)產(chǎn)品系列是收費(fèi)的Enterprise系列,這個(gè)系列分成:AS/ES/WS等分支。

          Advanced Server,縮寫(xiě)即AS。AS在標(biāo)準(zhǔn)Linux內(nèi)核的基礎(chǔ)上,
          做了性能上的增強(qiáng),并提高了可靠性,集成了眾多常見(jiàn)服務(wù)器的驅(qū)動(dòng)程序。
          可輕松識(shí)別IBM/DELL/HP等常見(jiàn)機(jī)架式服務(wù)器的磁盤(pán)陣列卡等設(shè)備。

          AS主要版本2.x/3.x/4.x,也就是我們所說(shuō)的AS3/AS4
          每一個(gè)版本還有若干個(gè)升級(jí),例如最早推出的AS4后,遇到了一些更新
          此時(shí)就會(huì)發(fā)布AS4 Update1,以后還會(huì)陸續(xù)有AS4 Update2/Update3等出現(xiàn)
          簡(jiǎn)稱AS4u1/AS4u2/AS4u3等。這和微軟的發(fā)布形式也是非常類似的,
          微軟的Windows NT4 從SP1出到SP6,Windows2000從SP1出到SP4。。。。

          AS這些Update版本所包含的主要程序包版本都有一定差別,最好不要混用
          否則很容易出現(xiàn)問(wèn)題。Prima和Plesk的安裝包,對(duì)于各種發(fā)行版都有了針對(duì)性的設(shè)計(jì)
          在下載頁(yè)面上,通常都會(huì)標(biāo)識(shí)出來(lái),支持哪些版本和哪些update的系統(tǒng)。

          ES,是AS的精簡(jiǎn)版本。他與常見(jiàn)的AS系列的區(qū)別是,AS支持到4路以上CPU,
          而ES只能支持兩路CPU。AS和ES在大多數(shù)程序包上并無(wú)區(qū)別,
          只在內(nèi)核等少數(shù)軟件包上有差異。
          AS和ES的售價(jià)差別比較大,通常ES用在隨服務(wù)器一同購(gòu)買(mǎi)的OEM版本中
          例如購(gòu)買(mǎi)DELL服務(wù)器,搭配的Linux會(huì)是ES系列。
          如果要搭配AS系列,則需要多花數(shù)千元。

          WS,是ES的進(jìn)一步簡(jiǎn)化版,主要針對(duì)企業(yè)內(nèi)部的桌面辦公市場(chǎng),國(guó)內(nèi)較少采用。

          Redhat的Fedora Core Linux和Enterprise Linux,都需要遵循GNU協(xié)議
          即需要發(fā)布自己的源代碼。
          所以,對(duì)于免費(fèi)的Fedora Core Linux,從Redhat網(wǎng)站上可以直接下載ISO刻盤(pán),
          還能下載到SRPM的ISO,即程序包源碼光盤(pán)。
          對(duì)于收費(fèi)的Enterprise Linux系列,是一款商業(yè)產(chǎn)品,所以網(wǎng)站上不能下載到ISO文件,
          需要購(gòu)買(mǎi)正式授權(quán)方可。
          由于Enterprise Linux也需要遵循GNU協(xié)議,故必須發(fā)布源代碼。
          所以在Redhat的網(wǎng)站上,可以獲得AS/ES/WS系列的SRPM源碼ISO文件。
          這些文件可以被自由的下載,修改代碼,重新編譯使用。

          一個(gè)名為Community Enterprise Operating System的項(xiàng)目誕生了。
          他的縮寫(xiě)既是CentOS。CentOS社區(qū)將Redhat的網(wǎng)站上的所有源代碼下載下來(lái),
          進(jìn)行重新編譯。重新編譯后,由于AS/ES/WS是商業(yè)產(chǎn)品,
          必須將所有Redhat的Logo和標(biāo)識(shí)改成自己的CentOS標(biāo)識(shí)。
          比如將AS4原版的SRPM源碼編譯后,就成為了CentOS 4.0。
          AS4Update1的源碼編譯后,就成為了CentOS4.1。
          AS4Update2的源碼編譯后,就成為了CentOS4.2。
          同理,CentOS的3.x/4.x都對(duì)應(yīng)著相應(yīng)的版本。

          所以我們說(shuō),CentOS就是Redhat的AS/ES/WS的免費(fèi)版本。
          使用CentOS,可以獲得和AS/ES相同的性能和感受。
          CentOS除了提供標(biāo)準(zhǔn)的編號(hào)1~4或者1~5的若干張ISO以外,
          還提供了最小化1CD的Server光盤(pán)。用Server光盤(pán)安裝好的系統(tǒng),
          就是一個(gè)最小化的Linux內(nèi)核加上常用的httpd/mysql等包
          不包含Xwindows桌面等對(duì)于服務(wù)器無(wú)用的軟件。

          Prima、Plesk、Virtuozzo和都可以安裝在CentOS上。

          學(xué)習(xí)CentOS的好地方:http://www.centospub.com/make.html

          posted @ 2009-02-04 10:42 小馬歌 閱讀(1152) | 評(píng)論 (0)編輯 收藏
           

          from: http://www.cnbeta.com/articles/52977.htm
          獨(dú)特的開(kāi)發(fā)模式造就了今天百家爭(zhēng)鳴的Linux,各個(gè)發(fā)行版的名字都代表哪些含義呢?下面是一些常用的版本,感興趣的朋友一起來(lái)看:
          1-Ubuntu 這或許是今天最常見(jiàn)的一個(gè)Linux發(fā)行版了,Ubuntu是一個(gè)南非的民族觀念,著眼于人們之間的忠誠(chéng)和聯(lián)系。該詞來(lái)自于祖魯語(yǔ)和科薩語(yǔ)。大意是“人道待人”(對(duì)他人仁慈)。另一種翻譯是:“天下共享的信念,連接起每個(gè)人”。

          2-PCLinuxOS
          三十種Linux發(fā)行版的名稱含義

          很明顯它的名稱是PC+Linux+Operating System組合在一起,擁有類似Windows的圖形用戶界面,方便用戶從Windows轉(zhuǎn)向Linux。

          3-openSUSE

          openSUSE由AMD和Novell共同發(fā)起,SUSE是德語(yǔ)“Software-und System-Entwicklung”的縮寫(xiě)(software and system development)。另有一說(shuō)是為了紀(jì)念德國(guó)計(jì)算機(jī)工先驅(qū)Konrad Zuse。

          4-Fedora

          Fedora由Red Hat發(fā)起,正是Red Hat標(biāo)志中人物所戴的那頂帽子。

          5-Mandriva
           三十種Linux發(fā)行版的名稱含義

          在以前稱為Mandrake,并由MandrakeSoft公司進(jìn)行維護(hù)。當(dāng)MandrakeSoft輸?shù)袅伺cHearst Corporation爭(zhēng)奪Mandrake名稱的官司,并收購(gòu)了Connectiva后,名稱變?yōu)榱薓andriva。


          6-Sabayon
          三十種Linux發(fā)行版的名稱含義

          一種意大利甜點(diǎn),也叫Zabaglion,用蛋黃、糖等原料烹飪而成。
          三十種Linux發(fā)行版的名稱含義


          7-Debian

          這個(gè)名字是Ian Murdock在1998年取的,由當(dāng)初是女朋友現(xiàn)在是妻子的Debra和他的名字混合而來(lái)。


          8-Damn Small Linux
          三十種Linux發(fā)行版的名稱含義

          像它的名字所說(shuō)那樣,這個(gè)Linux發(fā)行版體積只有50MB。


          9-MEPIS
          三十種Linux發(fā)行版的名稱含義

          根據(jù)創(chuàng)始人Warren Woodford所說(shuō),這個(gè)名字最初沒(méi)有任何含義,只是由于朋友在Skype上誤聽(tīng)得來(lái)的名字。

          10-CentOS
          三十種Linux發(fā)行版的名稱含義

          CentOS基于Red Had Enterprise Linux(RHEL),代表Community Enterprise Operationg System。

          11-Dreamlinux
          三十種Linux發(fā)行版的名稱含義

          這是一個(gè)巴西的Linux發(fā)行版,基于Debian,外觀類似蘋(píng)果的Mac OS X,名字就像介紹中說(shuō)的那樣。

          12-Puppy Linux
          三十種Linux發(fā)行版的名稱含義

          一種小型的Live CD系統(tǒng),目標(biāo)是簡(jiǎn)單易用,吉祥物是墨西哥小狗吉娃娃。
          三十種Linux發(fā)行版的名稱含義


          13-Kubuntu

          KDE + Ubuntu的產(chǎn)物

          14-Zenwalk
          三十種Linux發(fā)行版的名稱含義

          有禪意的名字,不過(guò)根據(jù)創(chuàng)始人JP Guillemin所說(shuō),這個(gè)名字是從發(fā)音和含義兩個(gè)方面模仿Neststep操作系統(tǒng)所起。

          15-Slackware

           
          創(chuàng)始人是Patrick Volkerding,最初是個(gè)人項(xiàng)目,這個(gè)名字借用自Church of the SubGenius中的術(shù)語(yǔ) "Slack"。

          16-Knoppix

          著名的Live CD發(fā)行版,基于Dedian,創(chuàng)始人是Klaus Knopper并以此命名。

          17-Gentoo
          三十種Linux發(fā)行版的名稱含義

          Gentoo是一種體型小巧的企鵝,據(jù)說(shuō)是企鵝中游泳速度最快的一種。

          18-Slax
          三十種Linux發(fā)行版的名稱含義

          一種基于Slackware的live CD發(fā)行版,它的名稱并沒(méi)有特別含義。

          19-Sidux

          基于Debian尚不穩(wěn)定,代號(hào)“Sid”的一支,名稱來(lái)自玩具總動(dòng)員中的角色Sid Phillips。

          20-Ubuntu Studio
          三十種Linux發(fā)行版的名稱含義

          Ubuntu的派生,以多媒體應(yīng)用為主。

          21-Xubuntu
          三十種Linux發(fā)行版的名稱含義

          XFCE + Ubuntu的產(chǎn)物

          22-Foresight
          三十種Linux發(fā)行版的名稱含義

          Foresight使用Conary作為包管理器,據(jù)稱,不像大多數(shù)發(fā)行版一年兩次升級(jí)那樣,它采用滾動(dòng)升級(jí)的方式。

          23-Red Hat

          下面創(chuàng)始人之一的Bob Young為您解釋其中含義:


           

          24-OpenGEU
          三十種Linux發(fā)行版的名稱含義

          OpenGEU最初稱為Geubuntu,使用Gnome和Enlightenment作為桌面管理器。

          25-Elive


           

          從圖標(biāo)中也可以看出這同樣是一款采用Enlightenment作為窗口管理器的發(fā)行版,它是基于Debian的Live Cd。

          26-Freespire
          三十種Linux發(fā)行版的名稱含義

          微軟2千萬(wàn)美元買(mǎi)下了“Lindows”這個(gè)名字后,Lindows更名為L(zhǎng)inspire,F(xiàn)reespire是基于Linspire的源碼的Live CD版本。

          27-Fluxbuntu
          三十種Linux發(fā)行版的名稱含義

          又是Ubuntu的派生版,采用Fluxbox作為窗口管理器。

          28-Xandors

          X代表X Windows系統(tǒng),Andros是希臘的島名。

          29-TinyME

          是PCLinuxOS的一個(gè)輕量級(jí)版本,所以稱為T(mén)iny。

          30-gOS
           三十種Linux發(fā)行版的名稱含義

          同樣也是一個(gè)基于Ubuntu的版本,以集成了眾多Google程序而聞名。不過(guò)這里的“g”并不是代表Goolge,也不是Green,而是代表它背后的Good OS LLC公司。

          關(guān)于更詳細(xì)的信息請(qǐng)參考:hehe2.net/linux-general/etymology-of-a-linux-distro/

          posted @ 2009-02-04 10:35 小馬歌 閱讀(179) | 評(píng)論 (0)編輯 收藏
           
          from:http://hi.baidu.com/di6yuansu/blog/item/87c11c2473cb322cd50742d6.html

          1、HTTP協(xié)議本身是無(wú)狀態(tài)的。
             我們上網(wǎng)都要靠HTTP協(xié)議傳遞信息。比如我們?cè)跒g覽器里鍵入:www.bokee.com這個(gè)網(wǎng)址并回車(chē),你會(huì)發(fā)現(xiàn)網(wǎng)址會(huì)變成:http://www.bokee.com,其原因就是瀏覽的網(wǎng)頁(yè)是基于http協(xié)議的。http協(xié)議無(wú)法記錄用戶經(jīng)常上哪些網(wǎng)站,有什么愛(ài)好,也無(wú)法記錄用戶的ID帳號(hào)和密碼。這就是所謂的HTTP協(xié)議無(wú)狀態(tài)。HTTP協(xié)議本身是無(wú)狀態(tài)的,這與HTTP協(xié)議本來(lái)的目的是相符的,客戶端只需要簡(jiǎn)單的向服務(wù)器請(qǐng)求下載某些文件,無(wú)論是客戶端還是服務(wù)器都沒(méi)有必要紀(jì)錄彼此過(guò)去的行為,每一次請(qǐng)求之間都是獨(dú)立的,好比一個(gè)顧客和一個(gè)自動(dòng)售貨機(jī)或者一個(gè)普通的(非會(huì)員制)大賣(mài)場(chǎng)之間的關(guān)系一樣,你認(rèn)得它們,它們則肯定認(rèn)不得你。

          2、怎樣理解cookie和session?
             由于cookie和session關(guān)系密切,這里我們一并介紹。
             打個(gè)比方:在河南時(shí),我常到一家熟食店買(mǎi)饞嘴鴨,該店老板為了促進(jìn)銷(xiāo)售,特發(fā)布“每購(gòu)滿10只即可免費(fèi)贈(zèng)送一只”的優(yōu)惠措施。除了家里有什么紅白喜事要饗客之外,應(yīng)該不會(huì)有人一次性購(gòu)買(mǎi)10只烤鴨吧?所以老板得想個(gè)法子來(lái)記錄顧客的消費(fèi)數(shù)量,這里總共有三種方案:
             Ⅰ、老板記住每一個(gè)顧客的消費(fèi)數(shù)量,等到顧客消費(fèi)滿10只的時(shí)候自動(dòng)奉送一只。這好比HTTP協(xié)議本身是有狀態(tài)的,可以記住顧客的活動(dòng)行為。但遺憾的是,出于種種考慮http協(xié)議本身是不能有狀態(tài)的,老板自個(gè)也沒(méi)有這么超常的記憶力,故這種方案行不通!
             Ⅱ、老板發(fā)給顧客一張積分卡,上面記錄著消費(fèi)的數(shù)量,一般還有個(gè)有效期限。每次買(mǎi)烤鴨時(shí),如果顧客出示這張卡片,老板就知道這位顧客曾經(jīng)光顧過(guò)小店。這種做法就是在客戶端保持狀態(tài),好比是cookie技術(shù)。打開(kāi)(windows系統(tǒng))C:\Documents and Settings\用戶名\Cookies,你會(huì)發(fā)現(xiàn)一些*.txt格式的小文件,這就是你瀏覽某些網(wǎng)站,它們發(fā)給你的“積分卡”(cookies)。
             Ⅲ、老板發(fā)給顧客一張會(huì)員卡,除了卡號(hào)之外什么信息也不紀(jì)錄,每次買(mǎi)烤鴨時(shí),如果顧客出示該卡片,則老板搬出店里的劃名冊(cè),找到你的卡號(hào)并加1個(gè)積分。這種做法就是在服務(wù)器端保持狀態(tài)。
          好比是session技術(shù)。
               cookie和session最大的區(qū)別在于: cookie是把積分卡發(fā)給顧客,上面記錄了顧客所有的消費(fèi)信息。Session則是把只有卡號(hào)(session id)的積分卡發(fā)給顧客,自家記錄了顧客所有的消費(fèi)信息。Cookie是保存在客戶端的;session是保存在服務(wù)器端,而session id則是保存在客戶端,通常也是一個(gè)cookie小文件,由于這個(gè)小文件除了session id(好比卡號(hào))外什么也沒(méi)有,因此比cookie安全多了。

          3、cookie和session有什么用?
             常見(jiàn)的用法,比如在有些網(wǎng)站下載東西需要會(huì)員先登陸。http協(xié)議本身是無(wú)狀態(tài)的,無(wú)法得知顧客是否已經(jīng)登陸,怎么辦呢?cookie和session就可以知道。再比如網(wǎng)上購(gòu)物,購(gòu)物車(chē)怎么知道顧客挑選過(guò)哪些商品呢?cookie和session也可以記錄??偠灾?,cookie和session就是能夠記錄顧客狀態(tài)的技術(shù),盡管二者屬于不同的技術(shù),但只要cookie能做到的,session也能做到!

          COOKIE攻略

           

          1、什么是cookie?
          0Cookie技術(shù)是一個(gè)非常有爭(zhēng)議的技術(shù),自經(jīng)誕生它就成了廣大網(wǎng)絡(luò)用戶和Web開(kāi)發(fā)人員的一個(gè)爭(zhēng)論焦點(diǎn)。有一些網(wǎng)絡(luò)用戶,甚至包括一些資深的Web專家也對(duì)它的產(chǎn)生和推廣感到不滿,這倒不是因?yàn)镃ookie技術(shù)的功能太弱或別的技術(shù)性能上的原因,而僅僅是因?yàn)樗麄冇X(jué)得Cookie的使用,對(duì)網(wǎng)絡(luò)用戶的隱私構(gòu)成了危害。因?yàn)镃ookie是由Web服務(wù)器保存在用戶瀏覽器上的小文本文件,它包含有關(guān)用戶的信息(如身份識(shí)別號(hào)碼、密碼、用戶在Web站點(diǎn)上購(gòu)物的方式或用戶訪問(wèn)該站點(diǎn)的次數(shù))。
              那么Cookie技術(shù)究竟怎樣呢?是否真的給網(wǎng)絡(luò)用戶帶來(lái)了個(gè)人隱私的危害呢?還是讓我們看了下面的內(nèi)容,再做回答吧。
                在WEB技術(shù)發(fā)展史上,Cookie技術(shù)的出現(xiàn)是一個(gè)重大的變革。最先是Netscape在它的Netscape Navigator 瀏覽器中引入了Cookie技術(shù),從那時(shí)起,World Wide Web 協(xié)會(huì)就開(kāi)始支持Cookie標(biāo)準(zhǔn)。以后又經(jīng)過(guò)微軟的大力推廣(因?yàn)槲④浀腎IS Web服務(wù)器所采用的ASP技術(shù)很大程度的使用了Cookie技術(shù)),即在微軟的Internet Explorer瀏覽器中完全支持Cookie技術(shù)。到現(xiàn)在,絕大多數(shù)的瀏覽器都支持Cookie技術(shù),或者至少兼容Cookie技術(shù)的使用。
                按照Netscape官方文檔中的定義,Cookie是在HTTP協(xié)議下,服務(wù)器或腳本可以維護(hù)客戶工作站上信息的一種方式。Cookie是由Web服務(wù)器保存在用戶瀏覽器上的小文件,它可以包含有關(guān)用戶的信息(如身份識(shí)別號(hào)碼、密碼、用戶在Web站點(diǎn)購(gòu)物的方式或用戶訪問(wèn)該站點(diǎn)的次數(shù))。無(wú)論何時(shí)用戶鏈接到服務(wù)器,Web站點(diǎn)都可以訪問(wèn)Cookie信息。
             如果你使用的是windows系統(tǒng),那么請(qǐng)打開(kāi)C:\Documents and Settings\用戶名\Cookies,你會(huì)發(fā)現(xiàn)該目錄下有好多*.txt格式的小文件。那就是cookie文件。當(dāng)然,在該目錄下你也可能什么都發(fā)現(xiàn)不了,那時(shí)因?yàn)槟阈卵b了系統(tǒng)或者從未瀏覽過(guò)因特網(wǎng),也或者你的瀏覽器禁用了cookie。否則該目錄下總會(huì)有點(diǎn)東西的。
               通俗地講,瀏覽器用一個(gè)或多個(gè)限定的文件來(lái)支持Cookie。這些文件在使用Windows操作系統(tǒng)的機(jī)器上叫做Cookie文件,在Macintosh機(jī)器上叫做magic Cookie 文件,這些文件被網(wǎng)站用來(lái)在上面存儲(chǔ)Cookie數(shù)據(jù)。網(wǎng)站可以在這些Cookie文件中插入信息,這樣對(duì)有些網(wǎng)絡(luò)用戶就有些副作用。有些用戶認(rèn)為這造成了對(duì)個(gè)人隱私的侵犯,更糟的是,有些人認(rèn)為Cookie是對(duì)個(gè)人空間的侵占,而且會(huì)對(duì)用戶的計(jì)算機(jī)帶來(lái)安全性的危害。
               目前有些Cookie是臨時(shí)的,另一些則是持續(xù)的。臨時(shí)的Cookie只在瀏覽器上保存一段規(guī)定的時(shí)間,一旦超過(guò)規(guī)定的時(shí)間該Cookie就會(huì)被系統(tǒng)清除。例如在PHP中Cookie被用來(lái)跟蹤用戶進(jìn)程直到用戶離開(kāi)網(wǎng)站。持續(xù)的Cookie則保存在用戶的Cookie文件中,下一次用戶返回時(shí),仍然可以對(duì)它進(jìn)行調(diào)用。
               在Cookie文件中保存Cookie,一些用戶會(huì)過(guò)分地認(rèn)為這將帶來(lái)很大的問(wèn)題。主要是有些用戶擔(dān)心Cookie會(huì)跟蹤用戶網(wǎng)上沖浪的習(xí)慣,譬如用戶喜愛(ài)到那些類型的站點(diǎn)、愛(ài)從事些什么活動(dòng)等。害怕這種個(gè)人信息一旦落入一些別有用心的家伙手中,那么個(gè)人也就可能成為一大堆廣告垃圾的對(duì)象,甚至遭到意外的損害。不過(guò),這種擔(dān)心壓根兒不會(huì)發(fā)生,因?yàn)榫W(wǎng)站以外的用戶是無(wú)法跨過(guò)網(wǎng)站來(lái)獲得Cookie信息的。所以想以這種目的來(lái)應(yīng)用Cookie是不可能的。不過(guò),由于一些用戶錯(cuò)誤的理解以及“以訛傳訛”,一些瀏覽器開(kāi)發(fā)商別無(wú)選擇,只好作出相適的響應(yīng)(例如Netscape Navigator4.0和Internet Explorer3.0都提供了屏蔽Cookie的選項(xiàng))。 個(gè)人認(rèn)為,無(wú)風(fēng)不起浪,如果網(wǎng)站程序員沒(méi)有嚴(yán)謹(jǐn)思路的話,cookie確實(shí)也存在些許安全問(wèn)題,不過(guò)這些瑕疵并不足以掩蓋cookie的優(yōu)秀品質(zhì),大多數(shù)人還是非常樂(lè)意使用它的。
               對(duì)Cookie技術(shù)期待了這么久的結(jié)果是,迫使許多瀏覽器開(kāi)發(fā)商在它們的瀏覽器中提供了對(duì)Cookie的靈活性控制功能。例如,目前的兩大主流瀏覽器Netscape Navigator 和 Internet Explorer是這樣處理Cookie的:Netscape Navigator4.0不但可以接受Cookie進(jìn)行警告,而且還可以屏蔽掉Cookie;InternetExplorer3.0也可以屏蔽Cookie,但在Internet Explorer4.0中就只能進(jìn)行接受警告而沒(méi)有提供屏蔽選項(xiàng),不過(guò)在Internet Explorer4.0之后的更新版本中又加入了屏蔽Cookie的功能選項(xiàng)。
               此外,很多最新的技術(shù)甚至已經(jīng)可以在不能屏蔽Cookie的瀏覽器上進(jìn)行Cookie的屏蔽了。例如,可以通過(guò)將Cookie文件設(shè)置成不同的類型來(lái)限制Cookie的使用。但是,非常不幸地是,要是你想完全屏蔽Cookie的話,肯定會(huì)因此拒絕許多的站點(diǎn)頁(yè)面。因?yàn)楫?dāng)今已經(jīng)有許多Web站點(diǎn)開(kāi)發(fā)人員愛(ài)上了Cookie技術(shù)的強(qiáng)大功能,例如Session對(duì)象的使用就離不開(kāi)Cookie的支持。


          2、Cookie工作原理?
              當(dāng)客戶訪問(wèn)某個(gè)基于PHP技術(shù)的網(wǎng)站時(shí),在PHP中可以使用setcookie函數(shù)生成一個(gè)cookie,系統(tǒng)經(jīng)處理把這個(gè)cookie發(fā)送到客戶端并保存在C:\Documents and Settings\用戶名\Cookies目錄下。cookie是 HTTP標(biāo)頭的一部分, 因此setcookie函數(shù)必須在任何內(nèi)容送到瀏覽器之前調(diào)用。這種限制與header()函數(shù)一樣(如需了解head()函數(shù),請(qǐng)自行查閱)。當(dāng)客戶再次訪問(wèn)該網(wǎng)站時(shí),瀏覽器會(huì)自動(dòng)把C:\Documents and Settings\用戶名\Cookies目錄下與該站點(diǎn)對(duì)應(yīng)的cookie發(fā)送到服務(wù)器,服務(wù)器則把從客戶端傳來(lái)的cookie將自動(dòng)地轉(zhuǎn)化成一個(gè)PHP變量。在PHP5中,客戶端發(fā)來(lái)的cookie將被轉(zhuǎn)換成全局變量。你可以通過(guò)$_COOKIE[‘xxx’]讀取。

               盡管今天仍有一些網(wǎng)絡(luò)用戶對(duì)于Cookie的爭(zhēng)論樂(lè)此不倦,但是對(duì)于絕大多數(shù)的網(wǎng)絡(luò)用戶來(lái)說(shuō)還是傾向于接受Cookie的。因此,我們盡可以放心地使用Cookie技術(shù)來(lái)開(kāi)發(fā)我們的WEB頁(yè)面。

          3、Cookie常見(jiàn)函數(shù)
          ● SetCookie 函數(shù)創(chuàng)建了一個(gè)Cookie,并且把它附加在HTTP頭的后面。必須注意的一點(diǎn)是:Cookie是HTTP協(xié)議頭的一部分,用于瀏覽器和服務(wù)器之間傳遞信息,所以必須在任何屬于HTML文件本身的內(nèi)容輸出之前調(diào)用SetCookie函數(shù),調(diào)用該函數(shù)前即使有空格、空白行都不行。如果setCookie()認(rèn)了第二,就沒(méi)有哪個(gè)元素敢認(rèn)第一。使用setcookie()函數(shù)的前提是客戶瀏覽器支持cookie,如果客戶將之禁用的話,setcookie()也就英雄無(wú)用武之地了。
             int SetCookie(string name, string value, int expire, string path, string domain, int secure,bool httponly);  
          參數(shù)說(shuō)明:
             name;設(shè)置cookie變量的名稱。
             value;設(shè)置cookie的值。
             expire;設(shè)置cookie過(guò)期時(shí)間。如果要把cookie保存為瀏覽器進(jìn)程,即瀏覽器關(guān)閉后就失效。那么可以直接把expiretime設(shè)為0。Eg:setcookie(“name”,”value”,0)。該參數(shù)不設(shè)置的話,關(guān)閉瀏覽器也能結(jié)束一個(gè)cookie。
              path:表示web服務(wù)器上的目錄,默認(rèn)為被調(diào)用頁(yè)面所在目錄. 這里還有一點(diǎn)要說(shuō)明的,比如你的站點(diǎn)有幾個(gè)不同的目錄(比如一個(gè)購(gòu)物目錄,一個(gè)論壇目錄),那么如果只用不帶路徑的Cookie的話,在一個(gè)目錄下的頁(yè)面里設(shè)的Cookie在另一個(gè)目錄的頁(yè)面里是看不到的,也就是說(shuō),Cookie是面向路徑的。實(shí)際上,即使沒(méi)有指定路徑,WEB服務(wù)器會(huì)自動(dòng)傳遞當(dāng)前的路徑給瀏覽器的,指定路徑會(huì)強(qiáng)制服務(wù)器使用設(shè)置的路徑。解決這個(gè)問(wèn)題的辦法是在調(diào)用SetCookie時(shí)加上路徑和域名,域名的格式可以是“http://www.phpuser.com/”,也可是“.phpuser.com”。 SetCookie函數(shù)里表示value的部分,在傳遞時(shí)會(huì)自動(dòng)被encode,也就是說(shuō),如果value的值是“test value”在傳遞時(shí)就變成了“test%20value”,跟URL的方法一樣。當(dāng)然,對(duì)于程序來(lái)說(shuō)這是透明的,因?yàn)樵赑HP接收Cookie的值時(shí)會(huì)自動(dòng)將其decode。

              domain:cookie可以使用的域名,默認(rèn)為被調(diào)用頁(yè)面的域名。這個(gè)域名必須包含兩個(gè)".",所以如果你指定你的頂級(jí)域名,你必須用".mydomain.com" 。設(shè)定域名后,必須采用該域名訪問(wèn)網(wǎng)站cookie才有效。如果你使用多個(gè)域名訪問(wèn)該頁(yè),那么這個(gè)地方可以為空或者訪問(wèn)這個(gè)cookie的域名都是一個(gè)域下面的。
              secure:如果設(shè)為"1",表示cookie只能被用戶的瀏覽器認(rèn)為是安全的服務(wù)器所記住。
              除了name之外所有的參數(shù)都是可選的。value,path,domain三個(gè)參數(shù)可以用空字符串""代換,表示沒(méi)有設(shè)置;expire 和 secure兩個(gè)參數(shù)是數(shù)值型的,可以用0表示。expire參數(shù)是一個(gè)標(biāo)準(zhǔn)的Unix時(shí)間標(biāo)記,可以用time()或mktime()函數(shù)取得,以秒為單位。secure參數(shù)表示這個(gè)Cookie是否通過(guò)加密的HTTPS協(xié)議在網(wǎng)絡(luò)上傳輸。
              httponly:如果設(shè)為1,則表示cookie只能被http協(xié)議所使用,任何腳本語(yǔ)言,比如javascrīpt是不能獲取PHP所創(chuàng)建的cookie的,這就有效削弱了來(lái)自XSS的攻擊。(注意了:這是PHP5才有的選項(xiàng),咱也沒(méi)有用過(guò)??戳斯俜绞謨?cè)嘗試著翻譯的,如有疑問(wèn),請(qǐng)參考官方手冊(cè)。)
             當(dāng)前設(shè)置的Cookie不是立即生效的,而是要等到下一個(gè)頁(yè)面或刷新后才能看到.這是由于在設(shè)置的這個(gè)頁(yè)面里Cookie由服務(wù)器傳遞給客戶瀏覽器,在下一個(gè)頁(yè)面或刷新后瀏覽器才能把Cookie從客戶的機(jī)器里取出傳回服務(wù)器的原因。

          小道消息

          16歲德國(guó)學(xué)生通過(guò)cookie破解Hotmail
              德國(guó)16歲學(xué)生Adriaan Graas對(duì)于網(wǎng)絡(luò)安全以及Web開(kāi)發(fā)很有興趣,他還發(fā)現(xiàn)了Hotmail破解之道。在一周多之后的今天,微軟還未修復(fù)該漏洞。
              這名小黑客的想法很簡(jiǎn)單,當(dāng)用戶登陸Hotmail時(shí),系統(tǒng)將會(huì)生成一個(gè)cookie方便下次登陸。由于該cookie并未綁定IP,因此黑客可以假冒這些cookie并用于登陸,甚至不需要知道受害人的密碼甚至email地址。通過(guò)XSS黑客可以插入一段javascrīpt代碼,利用log scrīpt將cookie發(fā)送到某個(gè)web服務(wù)器,腳本可以通過(guò)PHP,ASP,CGI等語(yǔ)言編寫(xiě)。

          Cookie應(yīng)用案例:
          ●創(chuàng)建一個(gè)cookie:
          SetCookie()
          ●創(chuàng)建cookie數(shù)組:
          其一:
          SetCookie("CookieArray[]", "Value 1");
          SetCookie("CookieArray[]", "Value 2");
          其二:
          SetCookie("CookieArray[0]", "Value 1");
          SetCookie("CookieArray[1]", "Value 2");
          ● 接收和處理Cookie

          PHP對(duì)Cookie的接收和處理的支持非常好,是完全自動(dòng)的,跟GET,POST變量的原則一樣,特別簡(jiǎn)單。
          比如設(shè)置一個(gè)名為MyCookier的Cookie,PHP會(huì)自動(dòng)從WEB服務(wù)器接收的HTTP頭里把它分析出來(lái),并形成一個(gè)可直接使用的全局變量,名為$_COOKIE[‘MyCookie’],這個(gè)變量的值就是Cookie的值。數(shù)組同樣適用。
          分別舉例如下:(假設(shè)這些都在以前的頁(yè)面里設(shè)置過(guò)了,并且仍然有效)
          echo $_COOKIE[‘MyCookie’];
          取出cookie數(shù)組的例子:
          <?php
          // 創(chuàng)建一個(gè)cookie數(shù)組
          setcookie("cookie[three]", "cookiethree");
          setcookie("cookie[two]", "cookietwo");
          setcookie("cookie[one]", "cookieone");
          // 頁(yè)面刷新之后,用foreach提取cookie數(shù)組。
          if (isset($_COOKIE['cookie'])) {
          foreach ($_COOKIE['cookie'] as $name => $value) {
             echo "$name : $value <br />\n";
          }
          }
          ?&gt;
          就這么簡(jiǎn)單。
          刪除Cookie
              要?jiǎng)h除一個(gè)已經(jīng)存在的Cookie,有兩個(gè)辦法:
          1、調(diào)用只帶有name參數(shù)的SetCookie,那么名為這個(gè)name的Cookie將被從關(guān)系戶機(jī)上刪掉;
          setcookie(“MyCookie”); //刪除MyCookie。
          2、設(shè)置Cookie的失效時(shí)間為time()或time()-1//time()減多少?zèng)]有關(guān)系啦,只要是過(guò)期時(shí)間就行//,那么這個(gè)Cookie在這個(gè)頁(yè)面的瀏覽完之后就被刪除了(其實(shí)是失效了)。例如:
              setcookie(“MyCookie”,”Value”,time()-1); //刪除MyCookie。
          要注意的是,當(dāng)一個(gè)Cookie被刪除時(shí),它的值在當(dāng)前頁(yè)在仍然有效的。
              如果要把cookie保存為瀏覽器進(jìn)程,即瀏覽器關(guān)閉后就失效。那么可以直接把expiretime設(shè)為0。例如:setcookie(“name”,”value”,0)。該參數(shù)不設(shè)置的話,關(guān)閉瀏覽器也能結(jié)束一個(gè)cookie。

          Cookie注意事項(xiàng)
          1、SetCookie()之前不能有任何html輸出,它認(rèn)了第二,沒(méi)有哪個(gè)元素敢認(rèn)第一,就是空格,空白行都不行。
          2、SetCookie()后,你在當(dāng)前頁(yè)調(diào)用echo $_COOKIE["name"]不會(huì)有輸出。必須刷新或到下一個(gè)頁(yè)面才可以看到Cookie值。原因很簡(jiǎn)單。SetCookie()執(zhí)行之后,往客戶端發(fā)送一個(gè)cookie,你不刷新或?yàn)g覽下一個(gè)頁(yè)面,客戶端怎么把cookie給你送回去呀?瀏覽器創(chuàng)建了一個(gè)Cookie后,對(duì)于每一個(gè)針對(duì)該網(wǎng)站的請(qǐng)求,都會(huì)在Header中帶著這個(gè)Cookie;不過(guò),對(duì)于其他網(wǎng)站的請(qǐng)求Cookie是絕對(duì)不會(huì)跟著發(fā)送的。而且瀏覽器會(huì)這樣一直發(fā)送,直到Cookie過(guò)期為止。
          3、使用Cookie的限制。一個(gè)瀏覽器能創(chuàng)建的Cookie數(shù)量最多為30個(gè),并且每個(gè)不能超過(guò)4KB,每個(gè)WEB站點(diǎn)能設(shè)置的Cookie總數(shù)不能超過(guò)20個(gè)。 (這是書(shū)上看到的說(shuō)法,應(yīng)該是一個(gè)web站點(diǎn)能創(chuàng)建的Cookie不能超過(guò)30個(gè)吧,要不然,我機(jī)子里的cookie少說(shuō)也上百了,請(qǐng)達(dá)人指教!)
          4、Cookie是保存在客戶端的,用戶禁用了Cookie,你的Cookie自然也就沒(méi)作用啦!現(xiàn)在的瀏覽器,每當(dāng)咱發(fā)送一個(gè)Cookie給客戶端,他就像看門(mén)狗一樣給攔截住了,并詢問(wèn)用戶是否允許Cookie進(jìn)門(mén)。天,用戶又不是專家,有幾個(gè)人知道啥叫Cookie呀?搞不好都當(dāng)病毒拒之門(mén)外了。

          posted @ 2009-02-02 16:16 小馬歌 閱讀(283) | 評(píng)論 (0)編輯 收藏
           

          from:http://hi.baidu.com/wangzengfang/blog/item/c9f97b7b34c6caf00bd18724.html
          下面的文章可供參考,但我遇到了幾百兆的數(shù)量庫(kù),幾次用此方法都失敗,原因是編輯器不能支持這么大的文本文件的編輯,另存為UTF8格式后,再次導(dǎo)入都不成功。

          怎么辦呢?程序員還是靠程序吧。

          從數(shù)據(jù)庫(kù)中取出中文字符串來(lái),用函數(shù)一看是UTF-8格式的,所有不能再轉(zhuǎn)換為UTF-8格式的了,那怎么辦呢?仔細(xì)想想,原來(lái)的網(wǎng)頁(yè)顯示中文是可行的,這時(shí)實(shí)際上是在GBK,GB2312編碼下的。那我把字符串取出后轉(zhuǎn)換成GBK的,即UTF-8=>BGK,果然可以顯示了。注意這時(shí)網(wǎng)頁(yè)中所有的編碼都是UTF-8的了,應(yīng)該跟一般的UTF-8的網(wǎng)頁(yè)一樣可以插入到數(shù)據(jù)庫(kù)里了。但是插入記錄還是亂碼,于是把set names utf8再加上。竟然成功了。

          但有個(gè)問(wèn)題:為何字段格式是latin1,卻可以gbk顯示出來(lái),但檢測(cè)卻是utf-8編碼,卻在utf-8下顯示不出來(lái),必須轉(zhuǎn)換成bgk才可以顯示出來(lái)?找到一篇強(qiáng)文!http://hi.baidu.com/wangzengfang/blog/item/8563a8f9b56bd25d252df2d7.html


          相信 MySQL 的編碼對(duì)很多人來(lái)說(shuō) … 一直是個(gè)相當(dāng)令人頭痛的問(wèn)題 … 今天所要做的介紹是如何把數(shù)據(jù)庫(kù)的數(shù)據(jù), 由 latin1 轉(zhuǎn)成 utf8..

          一般 .. MySQL 裝起來(lái)后(用 rpm 安裝) ,系統(tǒng)的默認(rèn)編碼是 latin1.

          而很多人在安裝一些網(wǎng)頁(yè)的系統(tǒng)時(shí),如 wordpress、LifeType、phpBB … 等等,都會(huì)選擇 utf8 。

          這時(shí) … 系統(tǒng)一樣可以正常運(yùn)作 … 只是當(dāng)用 phpmyadmin 進(jìn)入管理數(shù)據(jù)庫(kù)時(shí),就會(huì)發(fā)現(xiàn) .. 怎么中文字的部分都變成了歪七扭八 ..

          或者一些鬼畫(huà)符的文字。如:凡事先å¾?工作講起

          此現(xiàn)象就是 utf8 的文字以 latin1形式儲(chǔ)存,phpmyadmin 以 utf8 的數(shù)據(jù)讀取方式讀取 … 讀出來(lái)的數(shù)據(jù)就是這種鬼畫(huà)符…><。

          若要解決 phpmyadmin 讀出的鬼畫(huà)符 … 有兩個(gè)方法:

          1. 進(jìn)入 phpmyadmin 內(nèi)一個(gè)名為 libraries 的子目錄 .. 編輯 select_lang.lib.php. 找到 $mysql_charset_map 這一段下方 ..

          ‘utf-8′ => ‘utf8′,把它改成‘utf-8′ => ‘latin1′,

          然后存盤(pán) … 這時(shí)候就可以發(fā)現(xiàn)原先的鬼畫(huà)符 … 這時(shí)候又都正常了.

          2. 把數(shù)據(jù)庫(kù)的編碼轉(zhuǎn)成 utf8 …

          步驟:

          a. 把數(shù)據(jù)庫(kù) dump 出來(lái)

          mysqldump -u xxx -p database > database.sql –default-character-set=latin1

          這時(shí)候 dump 出來(lái)的 database.sql 是 latin1 的文件格式,然而是 utf8 的文字?jǐn)?shù)據(jù),因此這時(shí)若用 vi 開(kāi)檔看它 …

          還是會(huì)發(fā)現(xiàn)中文字是鬼畫(huà)符 … 這時(shí)不要被眼前的假象所騙 … 以為自己做錯(cuò) .. 幾接著做下一步驟。

          b. 把 dump 出來(lái)的 database.sql 下載回去 .. 用 emEditor或者editplus等支持保存文件時(shí)可選擇文件存儲(chǔ)格式的編輯器把 database.sql 打開(kāi),

          它可以正常識(shí)別 utf8 的文字 ..用字符串替換的功能,把 “latin1” 都替換成 “utf8” ,之后直接另存新檔 .. 這時(shí)把文件類型設(shè)定儲(chǔ)存成 UTF-8。

          c. 再把 database-utf8.sql 上傳到 server .. 這時(shí)我們用 vi 開(kāi)啟它 .. 就可以看見(jiàn)是正常的中文字 .. 這就表示檔案沒(méi)問(wèn)題啰。

          d. 把檔案匯入數(shù)據(jù)庫(kù)

          mysql database < database-utf8.sql -u xxx -p --default-character-set=utf8

          注意你的database名稱,如果你想把數(shù)據(jù)導(dǎo)入到另外一個(gè)數(shù)據(jù)庫(kù)中時(shí),因?yàn)槟阆氡A粼瓉?lái)的數(shù)據(jù)庫(kù)中的數(shù)據(jù)。那你應(yīng)該先自己建立一個(gè)空的數(shù)據(jù)庫(kù)。這條命令并不能在數(shù)據(jù)庫(kù)不存在的情況下建立數(shù)據(jù)庫(kù)。

          如果數(shù)據(jù)量不是很大 … 那么很快就可以完成這個(gè)步驟 .. 這時(shí)候若沒(méi)有錯(cuò)誤訊息出現(xiàn) .. 那么恭喜你 ..

          你已經(jīng)完成了數(shù)據(jù)庫(kù)轉(zhuǎn)換的工作了。如果有錯(cuò)誤訊息出現(xiàn) .. 主要有兩個(gè)情形 ..

          1. 文件文件內(nèi)的中文字,用 vi 看是亂碼 ..文件檔的格式不是 utf-8。

          2. 匯入的時(shí)候漏掉指定采用 utf8 的數(shù)據(jù)編碼匯入。

          以上的作業(yè)是在 數(shù)據(jù)庫(kù)系統(tǒng)都是處于 latin1 的環(huán)境底下,也就是沒(méi)有在 my.cnf 指定 default-character-set=utf8。

          posted @ 2009-01-24 10:56 小馬歌 閱讀(3380) | 評(píng)論 (0)編輯 收藏
           
          from:http://hi.baidu.com/wszxg8866/blog/item/023e3e32f6ada3ff1b4cff34.html

          mysql+php產(chǎn)生亂碼原因:
          1. mysql數(shù)據(jù)庫(kù)默認(rèn)的編碼是utf8,如果這種編碼與你的PHP網(wǎng)頁(yè)不一致,可能就會(huì)造成MYSQL亂碼.
          2. MYSQL中創(chuàng)建表時(shí)會(huì)讓你選擇一種編碼,如果這種編碼與你的網(wǎng)頁(yè)編碼不一致,也可能造成MYSQL亂碼.
          3. MYSQL創(chuàng)建表時(shí)添加字段是可以選擇編碼的,如果這種編碼與你的網(wǎng)頁(yè)編碼不一致,也可能造成MYSQL亂碼.
          4. 用戶提交頁(yè)面的編碼與顯示數(shù)據(jù)的頁(yè)面編碼不一致,就肯定會(huì)造成PHP頁(yè)面亂碼.
          5. 如用戶輸入資料的頁(yè)面是big5碼, 顯示用戶輸入的頁(yè)面卻是gb2312,這種100%會(huì)造成PHP頁(yè)面亂碼.
          6. PHP頁(yè)面字符集不正確.
          7. PHP連接MYSQL數(shù)據(jù)庫(kù)語(yǔ)句指定的編碼不正確.
          注意:
                  很多人都懷疑mysql版本不一致會(huì)導(dǎo)致亂碼,相信看了本說(shuō)明你就不會(huì)這樣認(rèn)為了.
                    平時(shí)你在某些網(wǎng)站看到的文字可能有幾種編碼, 如你看到一個(gè)繁體字,它有可能是big5編碼,也有 可能是utf-8編碼的,更有可能是gb碼的,沒(méi)錯(cuò),也就是說(shuō)有簡(jiǎn)體編碼的繁體字,也有繁體編碼的簡(jiǎn)體字,一定要了解這一點(diǎn).
          如果你是做一個(gè)簡(jiǎn)體編碼的網(wǎng)頁(yè),編碼定為GB2312,如果有香港和臺(tái)灣地區(qū)的訪客提交繁體的信息,就可能會(huì)造成亂碼,解決方法:
          • 將網(wǎng)站編碼設(shè)為 utf-8,這樣可以兼容世界上所有字符,
          • 如果網(wǎng)站已經(jīng)運(yùn)作了好久,已有很多舊數(shù)據(jù),不能再更改簡(jiǎn)體中文的設(shè)定,那么建議將頁(yè)面的編碼設(shè)為 GBK, GBK與GB2312的區(qū)別就在于:GBK能比GB2312顯示更多的字符,要顯示簡(jiǎn)體碼的繁體字,就只能用GBK. 

          •          使用mysql+php產(chǎn)生亂碼的原因都了解得很清楚了,那么解決就不困難了.

            mysql+php產(chǎn)生亂碼的解決辦法:

          1. 如果安裝mysql的編碼已不能更改,很多朋友是購(gòu)買(mǎi)虛擬主機(jī)建立網(wǎng)站,無(wú)權(quán)更改MYSQL的安裝編碼,這一關(guān)我們可以跳過(guò),因?yàn)橹灰竺娴牟骄壅_,一樣能解決亂碼問(wèn)題
          2. 修改數(shù)據(jù)庫(kù)編碼,如果是數(shù)據(jù)庫(kù)編碼不正確,可以在phpmyadmin 執(zhí)行如下命令:

            ALTER DATABASE 'test' DEFAULT CHARACTER SET utf8 COLLATE utf8_bin
            以上命令就是將test數(shù)據(jù)庫(kù)的編碼設(shè)為utf8.
          3. 修改表的編碼:

            ALTER TABLE 'category' DEFAULT CHARACTER SET utf8 COLLATE utf8_bin
            以上命令就是將一個(gè)表category的編碼改為utf8.
          4. 修改字段的編碼:

            ALTER TABLE 'test' CHANGE 'dd' 'dd' VARCHAR( 45 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL
            以上命令就是將test表中 dd的字段編碼改為utf8.
          5. 如果是這種情況容易解決,只需檢查下頁(yè)面,修改源文件的charset即可.
          6. 這種情況也是修改頁(yè)面charset即可.
          7. 在連接數(shù)據(jù)庫(kù)的語(yǔ)句中.
                                    mysql_connect('localhost','user','password');
                                    mysql_select_db('my_db');
                                    mysql_query("set names utf8;");     //select 數(shù)據(jù)庫(kù)之后加多這一句

                                    為了避免PHP頁(yè)面亂碼的發(fā)生,PHP頁(yè)面開(kāi)始第一句
                                    header("content-type:text/html; charset=utf-8");
                                    //強(qiáng)行指定頁(yè)面的編碼,以避免亂碼
          posted @ 2009-01-24 10:44 小馬歌 閱讀(145) | 評(píng)論 (0)編輯 收藏
           
          from:http://hi.baidu.com/jackywdx/blog/item/c60ce9d4af063105a18bb7fb.html

          mb_convert_encoding這個(gè)函數(shù)是用來(lái)轉(zhuǎn)換編碼的。原來(lái)一直對(duì)程序編碼這一概念不理解,不過(guò)現(xiàn)在好像有點(diǎn)開(kāi)竅了。
          不過(guò)英文一般不會(huì)存在編碼問(wèn)題,只有中文數(shù)據(jù)才會(huì)有這個(gè)問(wèn)題。比如你用Zend Studio或Editplus寫(xiě)程序時(shí),用的是gbk編碼,如果數(shù)據(jù)需要入數(shù)據(jù)庫(kù),而數(shù)據(jù)庫(kù)的編碼為utf8時(shí),這時(shí)就要把數(shù)據(jù)進(jìn)行編碼轉(zhuǎn)換,不然進(jìn)到數(shù)據(jù)庫(kù)就會(huì)變成亂碼。

          mb_convert_encoding的用法見(jiàn)官方:
          http://cn.php.net/manual/zh/function.mb-convert-encoding.php

          做一個(gè)GBK To UTF-8
          < ?php
          header("content-Type: text/html; charset=Utf-8");
          echo mb_convert_encoding("妳係我的友仔", "UTF-8", "GBK");
          ?>

          再來(lái)個(gè)GB2312 To Big5
          < ?php
          header("content-Type: text/html; charset=big5");
          echo mb_convert_encoding("你是我的朋友", "big5", "GB2312");
          ?>
          不過(guò)要使用上面的函數(shù)需要安裝但是需要先enable mbstring 擴(kuò)展庫(kù)。

          PHP中的另外一個(gè)函數(shù)iconv也是用來(lái)轉(zhuǎn)換字符串編碼的,與上函數(shù)功能相似。

          下面還有一些詳細(xì)的例子:
          iconv — Convert string to requested character encoding
          (PHP 4 >= 4.0.5, PHP 5)
          mb_convert_encoding — Convert character encoding
          (PHP 4 >= 4.0.6, PHP 5)

          用法:
          string mb_convert_encoding ( string str, string to_encoding [, mixed from_encoding] )
          需要先enable mbstring 擴(kuò)展庫(kù),在 php.ini里將; extension=php_mbstring.dll 前面的 ; 去掉
          mb_convert_encoding 可以指定多種輸入編碼,它會(huì)根據(jù)內(nèi)容自動(dòng)識(shí)別,但是執(zhí)行效率比iconv差太多;


          string iconv ( string in_charset, string out_charset, string str )
          注意:第二個(gè)參數(shù),除了可以指定要轉(zhuǎn)化到的編碼以外,還可以增加兩個(gè)后綴://TRANSLIT 和 //IGNORE,其中 //TRANSLIT 會(huì)自動(dòng)將不能直接轉(zhuǎn)化的字符變成一個(gè)或多個(gè)近似的字符,//IGNORE 會(huì)忽略掉不能轉(zhuǎn)化的字符,而默認(rèn)效果是從第一個(gè)非法字符截?cái)唷?br /> Returns the converted string or FALSE on failure.


          使用:

          發(fā)現(xiàn)iconv在轉(zhuǎn)換字符”—”到gb2312時(shí)會(huì)出錯(cuò),如果沒(méi)有ignore參數(shù),所有該字符后面的字符串都無(wú)法被保存。不管怎么樣,這個(gè)”—”都無(wú)法轉(zhuǎn)換成功,無(wú)法輸出。 另外mb_convert_encoding沒(méi)有這個(gè)bug.

          一般情況下用 iconv,只有當(dāng)遇到無(wú)法確定原編碼是何種編碼,或者iconv轉(zhuǎn)化后無(wú)法正常顯示時(shí)才用mb_convert_encoding 函數(shù).

          from_encoding is specified by character code name before conversion. it can be array or string - comma separated enumerated list. If it is not specified, the internal encoding will be used.
          /* Auto detect encoding from JIS, eucjp-win, sjis-win, then convert str to UCS-2LE */
          $str = mb_convert_encoding($str, “UCS-2LE”, “JIS, eucjp-win, sjis-win”);
          /* “auto” is expanded to “ASCII,JIS,UTF-8,EUC-JP,SJIS” */
          $str = mb_convert_encoding($str, “EUC-JP”, “auto”);

          例子:
          $content = iconv(”GBK”, “UTF-8″, $content);
          $content = mb_convert_encoding($content, “UTF-8″, “GBK”);
          posted @ 2009-01-24 10:43 小馬歌 閱讀(648) | 評(píng)論 (0)編輯 收藏
           

          安裝MySQL
          groupadd mysql
          useradd -g mysql mysql
          tar -zxvf mysql-5.0.45.tar.gz
          cd mysql-5.0.45
          ./configure --prefix=/server/mysql
          make
          make install
          /server/mysql/bin/mysql_install_db   --user=mysql   --force
          cp support-files/my-medium.cnf /etc/my.cnf
          cp support-files/mysql.server /etc/rc.d/init.d/mysqld
          chmod 700 /etc/rc.d/init.d/m
          chkconfig --add mysqld
          cd /server/mysql
          chown -R mysql var
          chgrp -R mysql .
          /server/mysql/bin/mysqld_safe --user=mysql &
          /server/mysql/bin/mysqladmin -u root password '7766506'
          /server/mysql/bin/mysql -u root -p

          安裝Apache
          tar -zvxf httpd-2.2.4.tar.gz
          cd httpd-2.2.4
          ./configure --prefix=/server/httpd\
          --enable-rewrite=shared\
          --enable-speling=shared\
          --enable-module=shared\
          --enable-track-vars\
          --with-config-file-path=/server/httpd/conf\
          --enable-so\
          --enable-mods-shared=most
          make
          make install
          /server/httpd/bin/apachectl start


          安裝GD庫(kù)(GIF,PNG,JPEG)
          a.安裝jpeg
          tar -zvxf jpegsrc.v6b.tar.gz
          cd jpeg-6b
          mkdir /usr/local/lib/bin
          mkdir /usr/local/lib/lib
          mkdir /usr/local/lib/include
          mkdir /usr/local/lib/man
          mkdir /usr/local/lib/man/man1
          ./configure --prefix=/usr/local/lib/ --enable-shared --enable-static
          make
          make install

          b.安裝libpng
          tar -zvxf libpng-1.2.20.tar.gz
          cd libpng-1.2.20
          cp scripts/makefile.linux makefile
          make test
          make install

          c.安裝freetype
          tar -zvxf freetype-2.3.5.tar.gz
          cd freetype-2.3.5
          ./configure --prefix=/usr/local/lib/
          make
          make install

          d.安裝zlib
          tar -zxvf zlib-1.2.3.tar.gz
          cd zlib.1.2.3
          ./configure --prefix=/usr/local/lib/
          make
          make install

          e.安裝GD庫(kù)
          tar -zvxf gd-2.0.34.tar.gz
          mkdir -p /usr/local/lib/gd
          cd gd-2.0.34
          ./configure --prefix=/usr/local/lib/
          --with-jpeg=/usr/local/lib/
          --with-png=/usr/local/lib/
          --with-zlib=/usr/local/lib/
          --with-freetype=/usr/local/lib/
          make
          make install


          安裝php5
          a.安裝libxml
          tar -zxf libxml2-2.6.11.tar.gz
          cd libxml2-2.6.11
          ./configure --prefix=/usr/local/lib/
          make
          make install


          c.安裝php5
          tar -zvxf php-5.2.4.tar.gz
          cd php-5.2.4
          ./configure
          --prefix=/server/php
          --with-apxs2=/server/httpd/bin/apxs
          --with-mysql=/server/mysql/
          --with-config-file-path=/server/php/lib/php.ini(此格式可省略)
          --with-libxml-dir=/usr/local/lib/
          --with-gd=/usr/local/lib/
          --with-jpeg-dir=/usr/local/lib/
          --with-zlib-dir=/usr/local/lib/
          --with-png=/usr/local/lib/
          --with-freetype-dir=/usr/local/lib/
          --enable-mbstring --enable-sockets
          make
          make install
          cp php.ini-dist /usr/local/php/lib/php.ini
          vi /server/php/lib/php.ini
          vi /server/httpd/conf/httpd.conf

          posted @ 2009-01-22 12:54 小馬歌 閱讀(616) | 評(píng)論 (1)編輯 收藏
           

           現(xiàn)在國(guó)內(nèi)主流的MP4機(jī)器,都宣稱可以直接播放RMVB和FLV。 我比較關(guān)心FLV,就是YOUTUBE、土豆、優(yōu)酷上的視頻格式。

          不過(guò),F(xiàn)LV也分FLV1和FLV4二種格式。(二者的文件后綴名都是FLV,但在電腦上用KMPLAYER播放時(shí),F(xiàn)LV4的文件會(huì)有提示)

          FLV1主要在歐美和中國(guó)的視頻網(wǎng)站流行,特點(diǎn)是體積小,在線播放流暢,但清晰度低。

          而FLV4是近年在日、韓視頻網(wǎng)站開(kāi)始流行的新格式,特點(diǎn)是解析度普遍在400*300以上,同等畫(huà)面尺寸下,要比FLV1清晰得多,色彩飽和度也特別濃郁。缺點(diǎn)是,文件比較大,在線播放經(jīng)常停頓。

          我從日韓視頻網(wǎng)站上搜集、下載了不少日韓歌星MV的FLV視頻,格式當(dāng)然是FLV4的。 很想知道,國(guó)內(nèi)的MP4是否能直接播放FLV4的格式?

          懇請(qǐng)有知道的朋友能指點(diǎn)一下

          問(wèn)題補(bǔ)充:不好意思,我不是籠統(tǒng)地指MP4是否支持FLV,而是特指FLV4格式,因?yàn)槲抑朗怯袔卓頜P4支持FLV1。

          據(jù)說(shuō),二種FLV的視頻編碼格式不同,F(xiàn)LV1的視頻編碼格式是Sorenson H.263或H.264,而FLV4則是ON2 VP6 。

          FLV4在線視頻片段觀賞:
          http://tclon2.com/index.htm


          MC目前還辦不到,我見(jiàn)過(guò)FLV4格式,是比較清楚。
          你可以用MC轉(zhuǎn)成MP4(H.264+AAC),再修改后綴為FLV,F(xiàn)LASH播放器可以直接調(diào)用播放,效果同樣非常好,不比On2VP6+MP3差.

          On2 VP6-S 高清視頻
          On2 VP6-S編碼器是Adobe Flash Player的新伙伴,專為播放高清內(nèi)容而設(shè)。比較H.264 (AVC)及其他同類技術(shù),為 Adobe® Flash® Player 而設(shè)的On2 VP6-S能以較低的數(shù)據(jù)傳輸率及處理器利用率,輸出一流的高清影像。

          壓制flv4視頻參考地址:http://sk.sosg.net/post/45.htm
          On2 VP6和Sorenson Spark 視頻編解碼器比較:http://hi.baidu.com/jinzhou_shi/blog/item/0b249beffbde2c32adafd501.html
          土豆網(wǎng)為網(wǎng)絡(luò)視頻選用On2 VP6技術(shù),有效節(jié)省帶寬成本:http://www.eetchina.com/ART_8800558976_621496_NT_ae7228dc.HTM

          posted @ 2009-01-19 14:51 小馬歌 閱讀(8762) | 評(píng)論 (4)編輯 收藏
           
          手機(jī)專用視頻格式 3GP
            3GP概述
            3GP是一種3G流媒體的視頻編碼格式,主要是為了配合3G網(wǎng)絡(luò)的高傳輸速度而開(kāi)發(fā)的,也是目前手機(jī)中最為常見(jiàn)的一種視頻格式。
            目前,市面上一些安裝有Realplay播放器的智能手機(jī)可直接播放后綴為rm的文件,這樣一來(lái),在智能手機(jī)中欣賞一些rm格式的短片自然不是什么難事。然而,智能手機(jī)畢竟是少數(shù),大部分手機(jī)并不支持rm格式的短片,若要在這些手機(jī)上實(shí)現(xiàn)短片播放則必須采用一種名為3GP的視頻格式。目前有許多具備攝像功能的手機(jī),拍出來(lái)的短片文件其實(shí)都是以3GP為后綴的,如諾基亞6230、摩托羅拉V600、阿爾卡特OT756等。下文將介紹如何制作適合手機(jī)播放的3GP文件。
            在目前上市的一些智能手機(jī)或者支持視頻拍攝的手機(jī)中我們往往能看到所謂支持3GPP格式圖象,那么什么是3GPP格式呢?簡(jiǎn)單的說(shuō),該格式是“第三代合作伙伴項(xiàng)目”(3GPP)制定的一種多媒體標(biāo)準(zhǔn),使用戶能使用手機(jī)享受高質(zhì)量的視頻、音頻等多媒體內(nèi)容。其核心由包括高級(jí)音頻編碼 (AAC)、自適應(yīng)多速率 (AMR) 和MPEG-4 和 H.263 視頻編碼解碼器等組成,目前大部分支持視頻拍攝的手機(jī)都支持3GPP格式的視頻播放。
            轉(zhuǎn)換工具是關(guān)鍵
            在整個(gè)制作過(guò)程中,首先要下載將通常格式的視頻文件轉(zhuǎn)為3GP的工具,在這里記者推薦諾基亞的NOKIA multimedia converter Pro V2.0,這是諾基亞專門(mén)編寫(xiě)的壓制工具,可以把AVI、MPG等格式的視頻文件直接轉(zhuǎn)換成手機(jī)上能看的3GP文件。
            下載后按步驟安裝。安裝完畢后雙擊文件MMConverterPro.exe即可打開(kāi)軟件主界面。
            在界面的中上方,有Video和Audio兩個(gè)按鍵,點(diǎn)擊后可分別進(jìn)入各自的界面。其中的Video界面是本文的主題,使用者可以在這里將各種格式的視頻文件轉(zhuǎn)換為適于手機(jī)播放的3GP。至于Audio,顧名思義是制作音樂(lè)的界面,使用者在此可將電腦常用的mp3文件轉(zhuǎn)為適合手機(jī)彩信發(fā)送和存儲(chǔ)的AMR格式。同時(shí),通過(guò)這個(gè)方法也可以制作AMR格式的真人鈴聲。
            除了諾基亞專用的轉(zhuǎn)換工具以外推薦的一款通用的轉(zhuǎn)換工具:Xilisoft Video Converter 這款軟件優(yōu)點(diǎn):可以在DVD、VCD、SVCD、MOV、RM、AVI、MPEG、WMV、3GP、MP4等格式間相互轉(zhuǎn)換,你可以指定視頻和音頻編碼器、設(shè)置各項(xiàng)輸出參數(shù),其重要之處在于:可以從視頻文件轉(zhuǎn)換出任意流行的音頻文件,諸如MP2、MP3、AC3、RA、M4A等。此工具支持多線程,可以同時(shí)進(jìn)行多個(gè)文件的轉(zhuǎn)換,所有的轉(zhuǎn)換過(guò)程都非常簡(jiǎn)明快捷。
            轉(zhuǎn)換軟件操作簡(jiǎn)單
            Windows Moive Maker制作的短片格式為WMV,需要再用WMV to AVI MPEG VCD SVCD DVD Converter將其轉(zhuǎn)為AVI或MPG格式,轉(zhuǎn)換方法可參照工具附帶的說(shuō)明書(shū),相當(dāng)簡(jiǎn)便。隨即進(jìn)入最后步驟,制作3GP格式的手機(jī)短片。
            1、在NOKIA multimedia converter Pro V2.0的主界面中選擇File→Open→選擇截取好的短片。
            2、打開(kāi)短片后,界面中間原本字體為灰色的convert按鍵會(huì)變?yōu)楹谏c(diǎn)擊convert,鍵入文件名、選好存放路徑,按下“保存”鍵即可。
            3、轉(zhuǎn)換成功后,你可以點(diǎn)擊右面界面的播放鍵來(lái)預(yù)覽制作完成的3GP影片了,此時(shí)你還會(huì)發(fā)現(xiàn)現(xiàn)在的文件比原來(lái)的要小得多。
            3GP是一個(gè)多媒體儲(chǔ)存格式, 由3GPP所定義并為3G手機(jī)所使用. 它是一個(gè)簡(jiǎn)化的MPEG-4 Part 14 (MP4) 版本. 3GP版本的檔案附檔名為 .3gp 或 .3g2
            3GP是以MPEG-4 or H.263格式儲(chǔ)存影像串流(video streams),并以AMR-NB or AAC-LC 格式儲(chǔ)存聲音串流(audio streams)。3GP檔案永遠(yuǎn)為big-endian,儲(chǔ)存以及轉(zhuǎn)換從最高位元開(kāi)始(the most significant bytes first)。3GP亦定義影像的大小以及帶寬, 所以內(nèi)容可以正確的縮至手機(jī)螢?zāi)伙@示的大小。
            透過(guò)合適的多媒體播放軟件,3GP檔案亦可以在個(gè)人電腦上觀看。支援3GP格式的多媒體播放軟件計(jì)有:Media Player Classic、MPlayer、QuickTime、RealPlayer、VLC Player、Xine及Zoom Player。
            3GP影像檔案可使用3GP Video Converter 或使用 MPEG Streamclip 和QuickTime Alternative 并用的方式,以轉(zhuǎn)換至多種其他格式,大多數(shù)有3G功能的電話已支援這種格式, 甚至在擷取影像時(shí)就是使用此種格式。在PC螢?zāi)伙@示的品質(zhì)與在手機(jī)螢?zāi)伙@示的品質(zhì)類似. 通常保全攝影機(jī)會(huì)使用此種格式, 以便可在一小塊區(qū)域顯示注腳。這也是為何手機(jī)使用3GP格式的原因。
            簡(jiǎn)單編輯電影片斷
            雖然相比一些常見(jiàn)的視頻文件,3GP所占的內(nèi)存非常小,但由于手機(jī)內(nèi)存限制,長(zhǎng)時(shí)間、大容量的電影并不適合通常的手機(jī)播放。所以在選取影片時(shí)制作者要特別留意,如果是常見(jiàn)的4-5分鐘長(zhǎng)短的MTV(音樂(lè)電視)短片大可放心壓縮;如果要截取電影的片斷則需要借助其他工具,如Windows Moive Maker進(jìn)行簡(jiǎn)單編輯。
            1、打開(kāi)Windows Moive Maker,選擇文件→導(dǎo)入→在電腦中尋找需要剪切的影片→雙擊打開(kāi)。
            2、此時(shí)軟件會(huì)讀取影片信息,時(shí)間依影片大小而定,在進(jìn)度條達(dá)到100%時(shí)即可,軟件界面的中間會(huì)顯示“剪輯1”。
            3、點(diǎn)選“剪輯1”,此時(shí)在軟件界面的右方會(huì)顯示影片播放信息,將下方的滑塊移至你想剪輯片斷的開(kāi)始處,點(diǎn)選界面頂部工具欄中的“剪輯”,選擇“分割”,此時(shí)會(huì)生成“剪輯1(1)”文件。
            4、點(diǎn)選“剪輯1(1)”,將滑塊移至你想剪輯片斷的結(jié)尾處,再此處點(diǎn)選界面頂部工具欄中的“剪輯”、“分割”,此時(shí)將生成“剪輯1(2)”。
            5、經(jīng)過(guò)兩次分割后的“剪輯1(1)”即為你所想要截取的影片,在“剪輯1(1)”上選擇“添加到情節(jié)提要”,最后選擇文件→保存電影。
            在現(xiàn)時(shí)市面上提供手機(jī)畫(huà)像的電話所使用的標(biāo)準(zhǔn),有以下兩個(gè):
            3GPP(GSM手機(jī)使用的標(biāo)準(zhǔn))
            3GPP2(CDMA手機(jī)使用的標(biāo)準(zhǔn))
            兩者都是基于相同的編碼標(biāo)準(zhǔn):影像方面采用MPEG-4及H.263,而聲音則采用AAC或AMR標(biāo)準(zhǔn)。
            推薦一個(gè)專業(yè)的壓縮3GP格式的軟件,
            軟件名稱:Allok Video to 3GP Converter
            大小:4951KB
            軟件簡(jiǎn)介:
            Allok 公司出品的專為手機(jī) 3GP 視頻設(shè)計(jì)的媒體轉(zhuǎn)換器。此軟件使用 H263/MPEG4/XviD 這三種編解碼器,你的手機(jī)至少支持其中之一吧?
            轉(zhuǎn)換時(shí)的輸入格式目前支持幾乎所有主流的音頻視頻格式:*.avi;*.mpg;*.divx;*.div;*.xvid;*.mpeg;*.wmv;*.asf;*.asx;*.mpe;*.m1v;*.m2v;*.dat;*.mp4;*.m4v;*.dv;*.dif;*.mjpg;*.mjpeg;*.mov;*.qt;*.rm;*.rmvb;*.3gp;*.3g2;*.h261;*.h264;*.yuv;*.raw;*.flv;*.swf;*.vob;*.mkv;*.ogm;
            可以將它們轉(zhuǎn)換為:
            3GP + AMR 格式(*.3gp)、3GP + AAC 格式(*.3gp)、3GP2 + AAC 格式(*.3g2)、MPEG-4 視頻格式(*.mp4)、AVI 視頻格式 (*.avi)、DivX 視頻格式(*.avi)
            特色功能:
            支持視頻分割,幫助您去粗取精,可以只保留你最喜愛(ài)的片段;
            允許導(dǎo)入外掛的各種字幕文件、支持所有的主流字幕文件格式。
            特別推薦各位朋友使用這個(gè)軟件壓縮你手機(jī)適合的手機(jī)電影,過(guò)幾天我再寫(xiě)一個(gè)此軟件詳細(xì)的使用教程。請(qǐng)各位朋友耐心等待!
            專業(yè)網(wǎng)站
            可以去下面幾個(gè)網(wǎng)站下載3gp手機(jī)電影:
            http://www.Sky3gp.com http://www.anwang.net http://www.3la3la.com http://www.fuwabbs.cn http://www.hao3gp.com http://www.3gp2.com http://www.513gp.com http://www.523gp.cn
          ASF
            ASF 是 Advanced Streaming format 的縮寫(xiě),由字面(高級(jí)流格式)意思就應(yīng)該看出這個(gè)格式的用處了吧。說(shuō)穿了 ASF 就是 MICROSOFT 為了和現(xiàn)在的 Real player 競(jìng)爭(zhēng)而發(fā)展出來(lái)的一種可以直接在網(wǎng)上觀看視頻節(jié)目的文件壓縮格式!由于它使用了 MPEG4 的壓縮算法,所以壓縮率和圖像的質(zhì)量都很不錯(cuò)。因?yàn)?ASF 是以一個(gè)可以在網(wǎng)上即時(shí)觀賞的視頻“流”格式存在的,所以它的圖像質(zhì)量比 VCD 差一點(diǎn)點(diǎn)并不出奇,但比同是視頻“流”格式的 RAM 格式要好。不過(guò)如果你不考慮在網(wǎng)上傳播,選最好的質(zhì)量來(lái)壓縮文件的話,其生成的視頻文件比 VCD (MPEG1)好是一點(diǎn)也不奇怪的,但這樣的話,就失去了 ASF 本來(lái)的發(fā)展初衷,還不如干脆用 N AVI 或者 DIVX 。但微軟的“子第”就是有它特有的優(yōu)勢(shì),最明顯的是各類軟件對(duì)它的支持方面就無(wú)人能敵。
          n AVI
            n AVI 是 newAVI 的縮寫(xiě),是一個(gè)名為 ShadowRealm 的地下組織發(fā)展起來(lái)的一種新視頻格式。它是由 Microsoft ASF 壓縮算法的修改而來(lái)的(并不是想象中的 AVI),視頻格式追求的無(wú)非是壓縮率和圖像質(zhì)量,所以 NAVI 為了追求這個(gè)目標(biāo),改善了原始的 ASF 格式的一些不足,讓 NAVI 可以擁有更高的幀率(frame rate)。當(dāng)然,這是犧牲 ASF 的視頻流特性作為代價(jià)的。概括來(lái)說(shuō), NAVI 就是一種去掉視頻流特性的改良型 ASF 格式!再簡(jiǎn)單點(diǎn)就是---非網(wǎng)絡(luò)版本的 ASF !
          AVI
            AVI 是 Audio Video Interleave 的縮寫(xiě),這個(gè)看來(lái)也不用我多解釋了,這個(gè)微軟由 WIN3.1 時(shí)代就發(fā)表的舊視頻格式已經(jīng)為我們服務(wù)了好幾個(gè)年頭了。如果這個(gè)都不認(rèn)識(shí),我看你還是別往下看了,這個(gè)東西的好處嘛,無(wú)非是兼容好、調(diào)用方便、圖像質(zhì)量好,但缺點(diǎn)我想也是人所共知的:尺寸大!就是因?yàn)檫@點(diǎn),我們現(xiàn)在才可以看到由 MPEG1 的誕生到現(xiàn)在 MPEG4 的出臺(tái)。
          MPEG
            MPEG 是 Motion Picture Experts Group 的縮寫(xiě),它包括了 MPEG-1, MPEG-2 和 MPEG-4 (注意,沒(méi)有MPEG-3,大家熟悉的MP3 只是 MPEG Layeur 3)。MPEG-1相信是大家接觸得最多的了,因?yàn)樗粡V泛的應(yīng)用在 VCD 的制作和一些視頻片段下載的網(wǎng)絡(luò)應(yīng)用上面,可以說(shuō) 99% 的 VCD 都是用 MPEG1 格式壓縮的,(注意 VCD2.0 并不是說(shuō)明 VCD 是用 MPEG-2 壓縮的)使用 MPEG-1 的壓縮算法,可以把一部 120 分鐘長(zhǎng)的電影(未視頻文件)壓縮到 1.2 GB 左右大小。MPEG-2 則是應(yīng)用在 DVD 的制作(壓縮)方面,同時(shí)在一些 HDTV(高清晰電視廣播)和一些高要求視頻編輯、處理上面也有相當(dāng)?shù)膽?yīng)用面。使用 MPEG-2 的壓縮算法壓縮一部 120 分鐘長(zhǎng)的電影(未視頻文件)可以到壓縮到 4 到 8 GB 的大?。ó?dāng)然,其圖像質(zhì)量等性能方面的指標(biāo) MPEG-1 是沒(méi)得比的)。MPEG-4 是一種新的壓縮算法,使用這種算法的 ASF 格式可以把一部 120 分鐘長(zhǎng)的電影(未視頻文件)壓縮到 300M 左右的視頻流,可供在網(wǎng)上觀看。其它的 DIVX 格式也可以壓縮到 600M 左右,但其圖像質(zhì)量比 ASF 要好很多。
          DIVX
            DIVX 視頻編碼技術(shù)可以說(shuō)是一種對(duì) DVD 造成威脅的新生視頻壓縮格式(有人說(shuō)它是 DVD 殺手),它由 Microsoft mpeg4v3 修改而來(lái),使用 MPEG4 壓縮算法。同時(shí)它也可以說(shuō)是為了打破 ASF 的種種協(xié)定而發(fā)展出來(lái)的。而使用這種據(jù)說(shuō)是美國(guó)禁止出口的編碼技術(shù) --- MPEG4 壓縮一部 DVD 只需要 2 張 CDROM!這樣就意味著,你不需要買(mǎi) DVD ROM 也可以得到和它差不多的視頻質(zhì)量了,而這一切只需要你有 CDROM 哦!況且播放這種編碼,對(duì)機(jī)器的要求也不高,CPU 只要是 300MHZ 以上(不管你是PII,CELERON,PIII,AMDK6/2,AMDK6III,AMDATHALON,CYRIXx86)在配上 64 兆的內(nèi)存和一個(gè) 8兆 顯存的顯卡就可以流暢的播放了。這絕對(duì)是一個(gè)了不起的技術(shù),前途不可限量!
          QuickTime
            QuickTime(MOV)是 Apple(蘋(píng)果)公司創(chuàng)立的一種視頻格式,在很長(zhǎng)的一段時(shí)間里,它都是只在蘋(píng)果公司的 MAC 機(jī)上存在。后來(lái)才發(fā)展到支持 WINDOWS 平臺(tái)的,但平心而論,它無(wú)論是在本地播放還是作為視頻流格式在網(wǎng)上傳播,都是一種優(yōu)良的視頻編碼格式。到目前為止,它共有 4 個(gè)版本,其中以 4.0 版本的壓縮率最好!
          REAL VIDEO
            REAL VIDEO (RA、RAM)格式由一開(kāi)始就是定位就是在視頻流應(yīng)用方面的,也可以說(shuō)是視頻流技術(shù)的始創(chuàng)者。它可以在用 56K MODEM 撥號(hào)上網(wǎng)的條件實(shí)現(xiàn)不間斷的視頻播放,當(dāng)然,其圖像質(zhì)量和 MPEG2、DIVX 等比是不敢恭維的啦。畢竟要實(shí)現(xiàn)在網(wǎng)上傳輸不間斷的視頻是需要很大的頻寬的,這方面 ASF 的它的有力競(jìng)爭(zhēng)者!
          RMVB
            所謂RMVB格式,是在流媒體的RM影片格式上升級(jí)延伸而來(lái)。VB即VBR,是Variable Bit Rate(可改變之比特率)的英文縮寫(xiě)。我們?cè)诓シ乓酝R?jiàn)的RM格式電影時(shí),可以在播放器左下角看到225Kbps字樣,這就是比特率。影片的靜止畫(huà)面和運(yùn)動(dòng)畫(huà)面對(duì)壓縮采樣率的要求是不同的,如果始終保持固定的比特率,會(huì)對(duì)影片質(zhì)量造成浪費(fèi)。
            而RMVB則打破了原先RM格式那種平均壓縮采樣的方式,在保證平均壓縮比的基礎(chǔ)上,設(shè)定了一般為平均采樣率兩倍的最大采樣率值。將較高的比特率用于復(fù)雜的動(dòng)態(tài)畫(huà)面(歌舞、飛車(chē)、戰(zhàn)爭(zhēng)等),而在靜態(tài)畫(huà)面中則靈活地轉(zhuǎn)為較低的采樣率,合理地利用了比特率資源,使RMVB在犧牲少部分你察覺(jué)不到的影片質(zhì)量情況下最大限度地壓縮了影片的大小,最終擁有了近乎完美的接近于DVD品質(zhì)的視聽(tīng)效果,如圖1所示的就是RMVB格式的《圣斗士冥王篇》??芍^體積與清晰度“魚(yú)與熊掌兼得”,其發(fā)展前景不容小覷。
            相較DVDrip而言,RMVB的優(yōu)勢(shì)不言而喻。首先在保證影片整體視聽(tīng)效果的前提下,RMVB的個(gè)頭只有300~450MB左右(以90分鐘的標(biāo)準(zhǔn)電影計(jì)算),而DVDrip卻需要700MB甚至更多;其次RMVB的字幕為內(nèi)嵌字幕,不像DVDrip那樣要安裝調(diào)試字幕外掛軟件,有時(shí)還會(huì)出現(xiàn)亂碼;更重要的是RMVB的影音播放只需一次性安裝完解碼器,以后無(wú)論影像還是音效都無(wú)需另行調(diào)試。而DVDrip卻視頻、音頻解碼一大堆,設(shè)置不當(dāng)還會(huì)造成音畫(huà)不同步、花屏失聲等等毛病。
          本地影像視頻
            ●AVI格式:它的英文全稱為Audio Video 文件后綴名:*.avi
            Interleaved,即音頻視頻交錯(cuò)格式。它于1992年被Microsoft公司推出,隨Windows3.1一起被人們所認(rèn)識(shí)和熟知。所謂“音頻視頻交錯(cuò)”,就是可以將視頻和音頻交織在一起進(jìn)行同步播放。這種視頻格式的優(yōu)點(diǎn)是圖像質(zhì)量好,可以跨多個(gè)平臺(tái)使用,其缺點(diǎn)是體積過(guò)于龐大,而且更加糟糕的是壓縮標(biāo)準(zhǔn)不統(tǒng)一,最普遍的現(xiàn)象就是高版本W(wǎng)indows媒體播放器播放不了采用早期編碼編輯的AVI格式視頻,而低版本W(wǎng)indows媒體播放器又播放不了采用最新編碼編輯的AVI格式視頻,所以我們?cè)谶M(jìn)行一些AVI格式的視頻播放時(shí)常會(huì)出現(xiàn)由于視頻編碼問(wèn)題而造成的視頻不能播放或即使能夠播放,但存在不能調(diào)節(jié)播放進(jìn)度和播放時(shí)只有聲音沒(méi)有圖像等一些莫名其妙的問(wèn)題,如果用戶在進(jìn)行AVI格式的視頻播放時(shí)遇到了這些問(wèn)題,可以通過(guò)下載相應(yīng)的解碼器來(lái)解決。
            ●nAVI格式:nAVI是newAVI的縮寫(xiě),是一個(gè)名為ShadowRealm的地下組織發(fā)展起來(lái)的一種新視頻格式(與我們上面所說(shuō)的AVI格式?jīng)]有太大聯(lián)系)。它是由Microsoft
            ASF壓縮算法的修改而來(lái)的,但是又與下面介紹的網(wǎng)絡(luò)影像視頻中的ASF視頻格式有所區(qū)別,它以犧牲原有ASF視頻文件視頻“流”特性為代價(jià)而通過(guò)增加幀率來(lái)大幅提高ASF視頻文件的清晰度。
            ●DV-AVI格式:DV的英文全稱是Digital Video
            Format,是由索尼、松下、JVC等多家廠商聯(lián)合提出的一種家用數(shù)字視頻格式。目前非常流行的數(shù)碼攝像機(jī)就是使用這種格式記錄視頻數(shù)據(jù)的。它可以通過(guò)電腦的IEEE
            1394端口傳輸視頻數(shù)據(jù)到電腦,也可以將電腦中編輯好的的視頻數(shù)據(jù)回錄到數(shù)碼攝像機(jī)中。這種視頻格式的文件擴(kuò)展名一般是.avi,所以也叫DV-AVI格式。
            ●MPEG格式:它的英文全稱為Moving Picture Expert
            Group,即運(yùn)動(dòng)圖像專家組格式,家里常看的VCD、SVCD、DVD就是這種格式。MPEG文件格式是運(yùn)動(dòng)圖像壓縮算法的國(guó)際標(biāo)準(zhǔn),它采用了有損壓縮方法減少運(yùn)動(dòng)圖像中的冗余信息,說(shuō)的更加明白一點(diǎn)就是MPEG的壓縮方法依據(jù)是相鄰兩幅畫(huà)面絕大多數(shù)是相同的,把后續(xù)圖像中和前面圖像有冗余的部分去除,從而達(dá)到壓縮的目的(其最大壓縮比可達(dá)到200:1)。目前MPEG格式有三個(gè)壓縮標(biāo)準(zhǔn),分別是MPEG-1、MPEG-2、和MPEG-4,另外,MPEG-7與MPEG-21仍處在研發(fā)階段。
            MPEG-1:制定于1992年,它是針對(duì)1.5Mbps以下數(shù)據(jù)傳輸率的數(shù)字存儲(chǔ)媒體運(yùn)動(dòng)圖像及其伴音編碼而設(shè)計(jì)的國(guó)際標(biāo)準(zhǔn)。也就是我們通常所見(jiàn)到的VCD制作格式。使用MPEG-1的壓縮算法,可以把一部120分鐘長(zhǎng)的電影壓縮到1.2GB左右大小。這種視頻格式的文件擴(kuò)展名包括.mpg、.mlv、.mpe、.mpeg及VCD光盤(pán)中的.dat文件等。
            MPEG-2:制定于1994年,設(shè)計(jì)目標(biāo)為高級(jí)工業(yè)標(biāo)準(zhǔn)的圖像質(zhì)量以及更高的傳輸率。這種格式主要應(yīng)用在DVD/SVCD的制作(壓縮)方面,同時(shí)在一些HDTV(高清晰電視廣播)和一些高要求視頻編輯、處理上面也有相當(dāng)?shù)膽?yīng)用。使用MPEG-2的壓縮算法,可以把一部120分鐘長(zhǎng)的電影壓縮到4到8GB的大小。這種視頻格式的文件擴(kuò)展名包括.mpg、.mpe、.mpeg、.m2v及DVD光盤(pán)上的.vob文件等。
            MPEG-4:制定于1998年,MPEG-4是為了播放流式媒體的高質(zhì)量視頻而專門(mén)設(shè)計(jì)的,它可利用很窄的帶度,通過(guò)幀重建技術(shù),壓縮和傳輸數(shù)據(jù),以求使用最少的數(shù)據(jù)獲得最佳的圖像質(zhì)量。目前MPEG-4最有吸引力的地方在于它能夠保存接近于DVD畫(huà)質(zhì)的小體積視頻文件。另外,這種文件格式還包含了以前MPEG壓縮標(biāo)準(zhǔn)所不具備的比特率的可伸縮性、動(dòng)畫(huà)精靈、交互性甚至版權(quán)保護(hù)等一些特殊功能。這種視頻格式的文件擴(kuò)展名包括.asf、.mov和DivX ,AVI等。
            小提示:細(xì)心的用戶一定注意到了,這中間怎么沒(méi)有MPEG-3編碼?實(shí)際上,大家熟悉的MP3就是采用的MPEG-3(MPEG
            Layeur3)編碼。
            ●DivX格式:這是由MPEG-4衍生出的另一種視頻編碼(壓縮)標(biāo)準(zhǔn),也即我們通常所說(shuō)的DVDrip格式,它采用了MPEG4的壓縮算法同時(shí)又綜合了MPEG-4與MP3各方面的技術(shù),說(shuō)白了就是使用DivX壓縮技術(shù)對(duì)DVD盤(pán)片的視頻圖像進(jìn)行高質(zhì)量壓縮,同時(shí)用MP3或AC3對(duì)音頻進(jìn)行壓縮,然后再將視頻與音頻合成并加上相應(yīng)的外掛字幕文件而形成的視頻格式。其畫(huà)質(zhì)直逼DVD并且體積只有DVD的數(shù)分之一。這種編碼對(duì)機(jī)器的要求也不高,所以DivX視頻編碼技術(shù)可以說(shuō)是一種對(duì)DVD造成威脅最大的新生視頻壓縮格式,號(hào)稱DVD殺手或DVD終結(jié)者。
            ●MOV格式:美國(guó)Apple公司開(kāi)發(fā)的一種視頻格式,默認(rèn)的播放器是蘋(píng)果的QuickTimePlayer。具有較高的壓縮比率和較完美的視頻清晰度等特點(diǎn),但是其最大的特點(diǎn)還是跨平臺(tái)性,即不僅能支持MacOS,同樣也能支持Windows系列。
          網(wǎng)絡(luò)影像視頻
            ●ASF格式:它的英文全稱為Advanced Streaming format,它是微軟為了和現(xiàn)在的Real
            Player競(jìng)爭(zhēng)而推出的一種視頻格式,用戶可以直接使用Windows自帶的Windows Media
            Player對(duì)其進(jìn)行播放。由于它使用了MPEG-4的壓縮算法,所以壓縮率和圖像的質(zhì)量都很不錯(cuò)(高壓縮率有利于視頻流的傳輸,但圖像質(zhì)量肯定會(huì)的損失,所以有時(shí)候ASF格式的畫(huà)面質(zhì)量不如VCD是正常的)。
            ●WMV格式:它的英文全稱為Windows Media
            Video,也是微軟推出的一種采用獨(dú)立編碼方式并且可以直接在網(wǎng)上實(shí)時(shí)觀看視頻節(jié)目的文件壓縮格式。WMV格式的主要優(yōu)點(diǎn)包括:本地或網(wǎng)絡(luò)回放、可擴(kuò)充的媒體類型、部件下載、可伸縮的媒體類型、流的優(yōu)先級(jí)化、多語(yǔ)言支持、環(huán)境獨(dú)立性、豐富的流間關(guān)系以及擴(kuò)展性等。
            ●RM格式:Real Networks公司所制定的音頻視頻壓縮規(guī)范稱為Real
            Media,用戶可以使用RealPlayer或RealOne
            Player對(duì)符合RealMedia技術(shù)規(guī)范的網(wǎng)絡(luò)音頻/視頻資源進(jìn)行實(shí)況轉(zhuǎn)播并且RealMedia可以根據(jù)不同的網(wǎng)絡(luò)傳輸速率制定出不同的壓縮比率,從而實(shí)現(xiàn)在低速率的網(wǎng)絡(luò)上進(jìn)行影像數(shù)據(jù)實(shí)時(shí)傳送和播放。這種格式的另一個(gè)特點(diǎn)是用戶使用RealPlayer或RealOne
            Player播放器可以在不下載音頻/視頻內(nèi)容的條件下實(shí)現(xiàn)在線播放。另外,RM作為目前主流網(wǎng)絡(luò)視頻格式,它還可以通過(guò)其Real
            Server服務(wù)器將其它格式的視頻轉(zhuǎn)換成RM視頻并由Real
            Server服務(wù)器負(fù)責(zé)對(duì)外發(fā)布和播放。RM和ASF格式可以說(shuō)各有千秋,通常RM視頻更柔和一些,而ASF視頻則相對(duì)清晰一些。
            ●RMVB格式:這是一種由RM視頻格式升級(jí)延伸出的新視頻格式,它的先進(jìn)之處在于RMVB視頻格式打破了原先RM格式那種平均壓縮采樣的方式,在保證平均壓縮比的基礎(chǔ)上合理利用比特率資源,就是說(shuō)靜止和動(dòng)作場(chǎng)面少的畫(huà)面場(chǎng)景采用較低的編碼速率,這樣可以留出更多的帶寬空間,而這些帶寬會(huì)在出現(xiàn)快速運(yùn)動(dòng)的畫(huà)面場(chǎng)景時(shí)被利用。這樣在保證了靜止畫(huà)面質(zhì)量的前提下,大幅地提高了運(yùn)動(dòng)圖像的畫(huà)面質(zhì)量,從而圖像質(zhì)量和文件大小之間就達(dá)到了微妙的平衡。另外,相對(duì)于DVDrip格式,RMVB視頻也是有著較明顯的優(yōu)勢(shì),一部大小為700MB左右的DVD影片,如果將其轉(zhuǎn)錄成同樣視聽(tīng)品質(zhì)的RMVB格式,其個(gè)頭最多也就400MB左右。不僅如此,這種視頻格式還具有內(nèi)置字幕和無(wú)需外掛插件支持等獨(dú)特優(yōu)點(diǎn)。要想播放這種視頻格式,可以使用RealOnePlayer2.0或RealPlayer8.0加RealVideo9.0以上版本的解碼器形式進(jìn)行播放。
            ●FLV視頻格式
            FLV 是FLASH VIDEO的簡(jiǎn)稱,F(xiàn)LV流媒體格式是一種新的視頻格式,全稱為Flash Video。由于它形成的文件極小、加載速度極快,使得網(wǎng)絡(luò)觀看視頻文件成為可能,它的出現(xiàn)有效地解決了視頻文件導(dǎo)入Flash后,使導(dǎo)出的SWF文件體積龐大,不能在網(wǎng)絡(luò)上很好的使用等缺點(diǎn)。
            目前各在線視頻網(wǎng)站均采用此視頻格式。如新浪播客、56、土豆、酷6、youtube等,無(wú)一例外。FLV已經(jīng)成為當(dāng)前視頻文件的主流格式。
            FLV就是隨著Flash MX的推出發(fā)展而來(lái)的視頻格式,目前被眾多新一代視頻分享網(wǎng)站所采用,是目前增長(zhǎng)最快、最為廣泛的視頻傳播格式。是在sorenson 公司的壓縮算法的基礎(chǔ)上開(kāi)發(fā)出來(lái)的。FLV格式不僅可以輕松的導(dǎo)入Flash 中,速度極快,并且能其到保護(hù)版權(quán)的作用,并且可以不通過(guò)本地的微軟或者REAL播放器播放視頻。
            常見(jiàn)的視頻編碼:
            1、Microsoft RLE
            一種8位的編碼方式,只能支持到256色。壓縮動(dòng)畫(huà)或者是計(jì)算機(jī)合成的圖像等具有大面積色塊的素材可以使用它來(lái)編碼,是一種無(wú)損壓縮方案。
            2、Microsoft Video 1
            用于對(duì)模擬視頻進(jìn)行壓縮,是一種有損壓縮方案,最高僅達(dá)到256色,它的品質(zhì)就可想而知,一般還是不要使用它來(lái)編碼AVI。
            3、Microsoft H.261和H.263 Video Codec
            用于視頻會(huì)議的Codec,其中H.261適用于ISDN、DDN線路,H.263適用于局域網(wǎng),不過(guò)一般機(jī)器上這種Codec是用來(lái)播放的,不能用于編碼。
            4、Intel Indeo Video R3.2
            所有的Windows版本都能用Indeo video 3.2播放AVI編碼。它壓縮率比Cinepak大,但需要回放的計(jì)算機(jī)要比Cinepak的快。
            5、Intel Indeo Video 4和5
            常見(jiàn)的有4.5和5.10兩種,質(zhì)量比Cinepak和R3.2要好,可以適應(yīng)不同帶寬的網(wǎng)絡(luò),但必須有相應(yīng)的解碼插件才能順利地將下載作品進(jìn)行播放。適合于裝了Intel公司MMX以上CPU的機(jī)器,回放效果優(yōu)秀。如果一定要用AVI的話,推薦使用5.10,在效果幾乎一樣的情況下,它有更快的編碼速度和更高的壓縮比。
            6、Intel IYUV Codec
            使用該方法所得圖像質(zhì)量極好,因?yàn)榇朔绞绞菍⑵胀ǖ腞GB色彩模式變?yōu)楦泳o湊的YUV色彩模式。如果你想將AVI壓縮成MPEG-1的話,用它得到的效果比較理想,只是它的生成的文件太大了
            7、Microsoft MPEG-4 Video codec
            常見(jiàn)的有1.0、2.0、3.0三種版本,當(dāng)然是基于MPEG-4技術(shù)的,其中3.0并不能用于AVI的編碼,只能用于生成支持“視頻流”技術(shù)的ASF文件。
            8、DivX- MPEG-4 Low-Motion/Fast-Motion
            實(shí)際與Microsoft MPEG-4 Video code是相當(dāng)?shù)臇|西,只是Low-Motion采用的固定碼率,F(xiàn)ast-Motion采用的是動(dòng)態(tài)碼率,后者壓縮成的AVI幾乎只是前者的一半大,但質(zhì)量要差一些。Low-Motion適用于轉(zhuǎn)換DVD以保證較好的畫(huà)質(zhì),F(xiàn)ast-Motion用于轉(zhuǎn)換VCD以體現(xiàn)MPEG-4短小精悍的優(yōu)勢(shì)。
            9 、DivX 3.11/4.12/5.0
            實(shí)際上就是DivX,原來(lái)DivX是為了打破Microsoft的ASF規(guī)格而開(kāi)發(fā)的,現(xiàn)在開(kāi)發(fā)組搖身一變成了Divxnetworks公司,所以不斷推出新的版本,最大的特點(diǎn)就是在編碼程序中加入了1-pass和2-pass的設(shè)置,2-pass相當(dāng)于兩次編碼,以最大限度地在網(wǎng)絡(luò)帶寬與視覺(jué)效果中取得平衡。
          posted @ 2009-01-19 13:04 小馬歌 閱讀(468) | 評(píng)論 (0)編輯 收藏
          僅列出標(biāo)題
          共95頁(yè): First 上一頁(yè) 73 74 75 76 77 78 79 80 81 下一頁(yè) Last 
           
          主站蜘蛛池模板: 武定县| 修水县| 江北区| 瓦房店市| 太康县| 甘肃省| 湖北省| 哈密市| 遂宁市| 新建县| 德惠市| 徐州市| 苍山县| 左权县| 丰县| 延庆县| 望都县| 容城县| 彰化市| 环江| 定结县| 合水县| 白河县| 丰都县| 苍山县| 宝应县| 霍山县| 盖州市| 定州市| 嘉黎县| 吉水县| 彰化县| 广昌县| 合阳县| 绥芬河市| 沙田区| 徐汇区| 广饶县| 九龙县| 潞西市| 甘泉县|