I'm working on a Bitcoin project, and what I've seen are:
- Just the Bitcoin address
- A url parameter-like scheme with the format "bitcoin:{plus the bitcoin address}" (no brackets used)
- A more elaborate url parameter that includes the amount, like "bitcoin:{bitcoin addr}?amount={the amount}
Coinbase uses the last scheme and it is fully recognized by the BlockChain iPhone app, enabling you to request a certain amount of Bitcoin directed to a specific address.
Coinbase uses the (deprecated) Google chart apis and the full querystring they use to build a QR code looks like this:
<img width="300" height="300" alt="Chart?cht=qr&chl=bitcoin%3a1k1yfezde2c37pwdevjnin1yc2qbtly6bk%3famount%3d0" src="https://chart.googleapis.com/chart?cht=qr&chl=bitcoin%3A1K1yfEZde2C37pWDevjnin1yc2qBtLy6bk%3Famount%3D0.01&choe=UTF-8&chs=300x300">
If you run that src url through a url decoder, you'll find that it requests 0.01 BTC to the address 1K1yfEZde2C37pWDevjnin1yc2qBtLy6bk.
When you're building a QR code, you don't need to url-encode the data. Coinbase is only doing so because they have to request the QR code from Google through a url addressing scheme.
I build my QR codes on my own server and display them as images on a web page, and I just use non-encoded data.