http://jakarta.apache.org/commons/patches.html
Every time I apply patches I have to go read the manual again, and there isn't a wealth of examples.
http://www.network-theory.co.uk/articles/patchintro.html
Probably the best advice is to first try: the '--dry-run' option to experiment with the options until a combination is found that works.
For example using just
patch --dry-run -i japanese.diff
doesn't work, ie patch couldn't figure out that the patch was created with the '-u' option. So this combination works most of the time:
patch --dry-run -u -p0 -i japanese.diff
Then when the patch applies cleanly the '--dry-run' can be safely removed and the patch applied for real.