注意するのは、キャラクタセットの指定です。
※ Windows では、指定しない場合は SHIFT_JIS で出力されます
0003.py ( utf8n )
#! /usr/bin/env python3.1
import urllib.request
# **********************************************************
# ※ エラーをファイルに出力しています
# ※ file=object は、object に write メソッドが必要です
# ※ python312.chm::/library/functions.html#open
#
# ※ SSL が有効です
# **********************************************************
try:
response = urllib.request.urlopen('https://mixi.jp/')
except urllib.error.URLError as e:
print(e,file=open("error.log","at"))
exit()
html = response.read()
# サーバーからの http ヘッダ
print( response.info() )
# **********************************************************
# ※ ログイン前のページをファイルに出力しています
#
# ※ python312.chm::/library/codecs.html#standard-encodings
# ※ euc_jp | eucjp, ujis, u-jis
# ※ mixi は、EUC-JP です
#
# ※ 出力される mixi_home.txt は、SHIFT_JIS になります
# **********************************************************
print( html.decode("euc_jp"),file=open("mixi_home_sjis.txt","wt") )
# **********************************************************
# そのまま EUC-JP で出力
# **********************************************************
print(
html.decode("euc_jp"),
file=open(
"mixi_home_ujis.txt",
"wt",
encoding="euc_jp"
)
)
関連する記事
Python3.1 : URL を読み出す( bytes から string )
posted by
lightbox at 2010-06-20 18:46
|
Python
|

|
2010年06月17日
StringBuilder 側からメモリの拡張は容易ですが、GetWindowsDirectory に
引き渡す長さ以上の文字列が戻って来る場合は異常終了します
Imports System.Runtime.InteropServices ' DllImport
Module MyModule
' UINT GetWindowsDirectory(
' LPTSTR lpBuffer, // Windows ディレクトリが格納されるバッファ
' UINT uSize // ディレクトリバッファのサイズ
' );
<DllImport("Kernel32.dll", CharSet:=CharSet.Unicode)> _
Private Function GetWindowsDirectory( _
ByVal lpBuffer As System.Text.StringBuilder, _
ByVal uSize As System.UInt32 _
) As System.UInt32
End Function
Sub Main()
' C:\WINDOWS を取得します
Dim lpBuffer As System.Text.StringBuilder = New System.Text.StringBuilder(128)
Dim uRet As System.UInt32
uRet = GetWindowsDirectory( lpBuffer, 128 )
' uRet は 10 です
Console.WriteLine( uRet )
Console.WriteLine( lpBuffer )
' Length プロパティで切り捨てられて C:\WIN になります
lpBuffer.Length = 6
Console.WriteLine( lpBuffer )
End Sub
End Module
関連する Microsoft ドキュメント
文字列に対する既定のマーシャリング
値型に対する既定のマーシャリング
posted by
lightbox at 2010-06-17 20:22
|
VB.NET : テクニカル
|

|
Seesaa の各ページの表示について
Seesaa の 記事がたまに全く表示されない場合があります。その場合は、設定> 詳細設定> ブログ設定 で 最新の情報に更新の『実行ボタン』で記事やアーカイブが最新にビルドされます。
Seesaa のページで、アーカイブとタグページは要注意です。タグページはコンテンツが全く無い状態になりますし、アーカイブページも歯抜けページはコンテンツが存在しないのにページが表示されてしまいます。
また、カテゴリページもそういう意味では完全ではありません。『カテゴリID-番号』というフォーマットで表示されるページですが、実際存在するより大きな番号でも表示されてしまいます。
※ インデックスページのみ、実際の記事数を超えたページを指定しても最後のページが表示されるようです
対処としては、このようなヘルプ的な情報を固定でページの最後に表示するようにするといいでしょう。具体的には、メインの記事コンテンツの下に『自由形式』を追加し、アーカイブとカテゴリページでのみ表示するように設定し、コンテンツを用意するといいと思います。
※ エキスパートモードで表示しています
アーカイブとカテゴリページはこのように簡単に設定できますが、タグページは HTML 設定を直接変更して、以下の『タグページでのみ表示される内容』の記述方法で設定する必要があります
<% if:page_name eq 'archive' -%>
アーカイブページでのみ表示される内容
<% /if %>
<% if:page_name eq 'category' -%>
カテゴリページでのみ表示される内容
<% /if %>
<% if:page_name eq 'tag' -%>
タグページでのみ表示される内容
<% /if %>
この記述は、以下の場所で使用します