It sounds to me like the application in question does not support log rotation of this type; i.e. it is writing its output to a specific location in the file, so even if you 'flatten' the file by copying /dev/null over it, it will still write to that same offset, filling the beginning of the file with nulls (what you are seeing as ^@).
You will probably need to restart this application each time you want to rotate its logs.
I think it may be unnecessary to remove the nulls. I presume you are rotating the logs to save space? You may find that the file has now become a 'sparse' file. If you run a du -k logfile does the size reported match the same size as in ls -l logfile? If the du size is much smaller then it is a sparse file and not using much space, so you may as well leave it as it is.